
多态1、是什么一个继承关系下的类对象调用的同一函数产生了不同的行为2、条件基类指针或引用调用虚函数被调用的函数必须是虚函数且完成了虚函数的重写3、虚函数成员函数加virtual修饰4、重写两个虚函数分别在父和子类函数名参数返回值相同协变可不同5、纯虚函数是在虚函数后加上0有纯虚函数的类是抽象类没对象6、虚表指针对象前面的__vfptr(virtual function ptr) 4 bytes32位指向虚表单继承就一个多继承多个7、虚表基类对象的虚函数表中存放基类所有虚函数的地址。不同类各有各的虚表派⽣类中重写的基类的虚函数派⽣类的虚函数表中对应的虚函数就会被覆盖成派⽣类重写的虚函 数地址。派⽣类的虚函数表中包含(1)基类的虚函数地址(2)派⽣类重写的虚函数地址完成覆盖派⽣类 ⾃⼰的虚函数地址三个部分。虚函数表本质是⼀个存虚函数指针的指针数组⼀般情况这个数组最后⾯放了⼀个0x00000000标 记。(各个编译器⾃⾏定义的vs系列编译器会再后⾯放个0x00000000 标记g系列编译不会放)虚函数和普通函数⼀样的编译好后是⼀段指令都是存在代码段的只是虚函 数的地址⼜存到了虚表中。虚函数表存在哪的这个问题严格说并没有标准答案C标准并没有规定我们写下⾯的代码可以 对⽐验证⼀下。vs下是存在代码段(常量区