虚析构函数
- 如果存在父类指针指向子类的情况,应该将析构函数声明为虚函数
- delete父类指针时,才会调用子类的析构函数,保证析构的完整性
纯虚函数:没有函数体且初始化为0的虚函数,用来定义接口规范
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;
- 日本 任天堂创始人在他那个年代只有汇编可以用来写游戏。没有类,对象这些现成的可以用的结构
- 间接的使用寄存器,内存地址来表示数据结构的各种逻辑关系
- 用汇编的角度看各种语言,是作为一名安全人员学编程速成的一个支撑点,撬动上百门编程语言