虚析构函数-纯虚函数-抽象类-多继承

虚析构函数

  • 如果存在父类指针指向子类的情况,应该将析构函数声明为虚函数
  • delete父类指针时,才会调用子类的析构函数,保证析构的完整性

纯虚函数:没有函数体且初始化为0的虚函数,用来定义接口规范

  • Java:抽象类、接口
  • OC:协议
struct Animal {    //定义接口
    virtual void speak() = 0;
    virtual void run() = 0;
};

struct Dog : Animal {    //子类来写具体干嘛
    void speak() { ...}
    void run() { ...}
};

抽象类(Abstract Class)

  • 含有纯虚函数的类,不可以实例化(不可以创建对象)
  • 如果父类是抽象类,子类没有完全重写纯虚函数,那这个子类依然是抽象类

多继承

  • C++允许一个类可以有多个父类(不建议用,会增加程序设计复杂度)
struct Undergraduate : Student, Worker {...}
struct Undergraduate : public Student,public Worker {...}    //默认都是公有继承,不需要写

多类里面有同名函数

Undergraduate ug;
ug.eat();
ug.Student::eat();
ug.Worker::eat();

多类里面有同名成员变量

Undergraduate ug;
ug.m_age = 10;
ug.Student::m_age = 11();
ug.Worker::m_age = 12;
  • 日本 任天堂创始人在他那个年代只有汇编可以用来写游戏。没有类,对象这些现成的可以用的结构
  • 间接的使用寄存器,内存地址来表示数据结构的各种逻辑关系
  • 用汇编的角度看各种语言,是作为一名安全人员学编程速成的一个支撑点,撬动上百门编程语言
原文地址:https://www.cnblogs.com/sec875/p/12313393.html