• c++-zoo动物园


    面向对象抽象类写动物园

    animal

    animal.h

    #pragma once
    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    using namespace std;
    
    class Animal
    {
    public:
    	//纯虚函数,让子类继承并且实现
    	virtual void voice() = 0;
    	Animal();
    	virtual ~Animal();
    };
    
    
    //架构函数
    //让动物叫
    void letAnimalCry(Animal *animal);
    
    

    animal.cpp

    #include "Animal.h"
    
    Animal::Animal()
    {
    	cout << "animal().." << endl;
    }
    Animal::~Animal()
    {
    	cout << "~Animal()..." << endl;
    }
    
    void letAnimalCry(Animal *animal)
    {
    	animal->voice();
    
    	if (animal != NULL) {
    		delete animal;
    	}
    }
    

    dog

    dog.h

    #pragma once
    #include "Animal.h"
    class Dog : public Animal
    {
    public:
    	Dog();
    	~Dog();
    
    	virtual void voice();
    };
    
    
    

    dog.cpp

    #include "Dog.h"
    
    
    Dog::Dog()
    {
    	cout << "Dog().." << endl;
    }
    
    
    Dog::~Dog()
    {
    	cout << "~Dog().." << endl;
    }
    
    void Dog::voice()
    {
    	cout << "¹·¿ªÊ¼¿ÞÁË£¬ 555" << endl;
    }
    
    

    cat

    cat.h

    #pragma once
    #include "Animal.h"
    
    
    class Cat : public Animal
    {
    public:
    	Cat();
    	~Cat();
    
    	virtual void voice();
    };
    
    
    

    cat.cpp

    #include "Cat.h"
    
    
    Cat::Cat()
    {
    	cout << "cat().." << endl;
    
    }
    
    
    Cat::~Cat()
    {
    	cout << "~cat().." << endl;
    
    }
    
    void Cat::voice()
    {
    	cout << "小猫开始哭了,66666" << endl;
    }
    
    

    main

    main.cpp

    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    #include "Animal.h"
    #include "Dog.h"
    #include "Cat.h"
    
    
    using namespace std;
    
    int main(void)
    {
    	letAnimalCry(new Dog);
    
    	letAnimalCry(new Cat);
    
    #if 0
    	Animal *dog = new Dog;
    	letAnimalCry(dog);
    	delete Dog;
    #endif
    
    	return 0;
    }
    
  • 相关阅读:
    HDU 4763 Theme Section(KMP+枚举公共前后缀)
    HDU 3613 Best Reward(扩展KMP求前后缀回文串)
    HDU 3613 Best Reward(manacher求前、后缀回文串)
    扩展KMP模板
    Vue
    Vue
    css 文本换行 文本溢出隐藏用省略号表示剩下内容
    sublime 神一样的插件
    markdown
    css 居中布局
  • 原文地址:https://www.cnblogs.com/ygjzs/p/12079672.html
Copyright © 2020-2023  润新知