• C++ 继承原理。


    Makefile        

    1. SOURCE=$(wildcard ./*.cpp)
    2. OBJ=$(patsubst %.o,%.cpp,$(SOURCE))
    3. main:$(OBJ)
    4. g++ $(OBJ) -g -o main

    main.cpp

    1. #include"iostream"
    2. #include"Animal.h"
    3. using namespace std ;
    4. // test函数,需要一个animal类的地址
    5. void test(Animal *animal)
    6. {
    7. // 执行animal的行为
    8. animal->speak();
    9. }
    10. int main()
    11. {
    12. // 一个动物类指针保存了一个dog的地址,dog指向这个Dog类地址。
    13. Animal *dog = new Dog("Chanby");
    14. test(dog);
    15. Animal *cat = new Cat("Kikey");
    16. test(cat);
    17. // animal指针指向的地址进行释放。
    18. delete dog;
    19. delete cat;
    20. return 0;
    21. }

    Animal.h

    1. #include"iostream"
    2. #include"string"
    3. using namespace std ;
    4. // 这是一个Animal类。
    5. class Animal{
    6. protected:
    7. // 动物名字属性。
    8. string name;
    9. public:
    10. // 动物说话的行为指针,目前指向的地址为0;(vfptr)
    11. virtual void speak()=0;
    12. };
    13. // dog类继承animal类的保护和公共权限的行为和属性。
    14. class Dog:public Animal{
    15. public:
    16. // dog的构造函数,初始化 name 这个属性。
    17. Dog(string name)
    18. {
    19. this->name=name;
    20. // 父类中name是protected权限,但继承后是private权限。
    21. }
    22. // 多态,重写父类的speak函数,(把speak的地址给到父类的 virtual void speak()= void speak())
    23. void speak();
    24. };
    25. class Cat:public Animal{
    26. public:
    27. Cat(string name)
    28. {
    29. this->name=name;
    30. }
    31. void speak();
    32. };

    Animal.cpp

    1. #include"Animal.h"
    2. #include"iostream"
    3. #include"string"
    4. using namespace std ;
    5. // dog函数中的speak行为。
    6. void Dog::speak()
    7. {
    8. // this指向的是dog类。
    9. cout<<this->name+" is barball"<<endl;
    10. }
    11. void Cat::speak()
    12. {
    13. cout<<this->name+" is miaomiao"<<endl;
    14. }

  • 相关阅读:
    【附源码】计算机毕业设计SSM图书商城
    十二,HDR环境贴图卷积
    1010 Radix
    在 JavaScript 中检查 2 个数组是否相等的简单方法
    LeetCode //C - 23. Merge k Sorted Lists
    Docker存储驱动之- overlay2
    Android四大组件详解
    Linux下的文件IO
    [解决方案]springboot怎么接受encode后的参数(参数通过&=拼接)
    3D 生成重建006-3DFuse 形状引导一致性的文生3d的方法
  • 原文地址:https://blog.csdn.net/weixin_53064820/article/details/127700266