假设一个含有虚函数的子类。C++类在编译的时候,分配内存,提前布局虚函数表,定义VPTR;
当创建对象的时候,初始化子类的VPTR,使其指向父类的虚函数表;
当父类的构造函数运行结束的时候,子类的VPTR指向子类本身的虚函数表;
因此,当父类的构造函数调用虚函数的时候,调用的是父类自己的虚函数;当子类的构造函数调用虚函数的时候,调用的是子类自己的虚函数
假设一个含有虚函数的子类。C++类在编译的时候,分配内存,提前布局虚函数表,定义VPTR;
当创建对象的时候,初始化子类的VPTR,使其指向父类的虚函数表;
当父类的构造函数运行结束的时候,子类的VPTR指向子类本身的虚函数表;
因此,当父类的构造函数调用虚函数的时候,调用的是父类自己的虚函数;当子类的构造函数调用虚函数的时候,调用的是子类自己的虚函数