·1 什么是多态
静多态编译时期产生的多态又被称为早绑定函数重载 (函数名相同参数列表不同作用在同一作用域)模版
动多态运行时期的多态晚绑定继承中的多态
不同数据类型提供统一的一个接口
·2 动多态的产生条件
系统调用虚函数的时候
·3 动多态的过程
1 使用调用虚函数
2 找到vfptr指针
3 找到vf table
4.在表中找到对应函数
·5 虚函数列表什么时候产生在哪里储存
编译期产生 rodata
·6 构造函数能不能写成虚函数
不可以 构造函数无法通过指针引用调用。 vfptr构造时候写入对象多态调用虚函数要用vfptr
·7 静态函数能不能写成虚函数
不可以,静态函数不依赖于对象不依赖于指针进行调用产生不了动多态
·8 析构函数能不能写成虚函数
可以
虚函数能不能被处理成内敛函数
·9 什么情况下析构函数必须写成虚函数
当存在父类指针指向子类对象必须把父类析构函数写成虚函数(父类指针指向子类里父类开始的地方)父类指向堆上子类时确保父类中有虚函数
父类指针指向子类引用指针调用虚函数对象必须是完整的对象(构造函数执行完毕析构函数还没开始)
父类指针能指向子类对象子类指针能不能指向父类对象
可以
先构造父类在构造子类先析构子类再析构父类
·11 类的编译顺序
编译类名
成员名
成员函数体
·12。 隐藏
子类中的成员会隐藏父类中同名的成员
·13。 覆盖
子类中的成员方法会覆盖父类中(同返回值同函数名同参数列表)的虚函数
·14 rtti
运行时期的类型信息,指针指向对象类型在编译时期产生放在rodata
·15。dynamic -cast
父类指针转化为子类指针专用的,必须有rtti 父类指针指向对象确实是子类的