C++中虚函数
1. 虚函数、虚函数表、类
类的成员函数不占用内存空间
引入virtual后
为什么从1变成4?
当一个/多个虚函数加入类之后,编译器向类中插入一个看不见的成员变量——即虚函数表指针Vptr(4个字节)占用类对象内存空间,
虚函数表Vtbl的生成:类中存在至少一个虚函数,会在类中自动生成一个虚函数表
虚函数表指针被赋值的时机
Vptr赋值的语句
Vptr指向类Vtbl
类对象在内存中的布局
虚函数的工作原理和多态性的体现
父类中存在虚函数A,子类中也有一个同名虚函数A,当通过父类指针引用来绑定一个子类对象的时候,如果用父类指针调用这个虚函数,调用的其实是子类的虚函数————多态性