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

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

因此,当父类的构造函数调用虚函数的时候,调用的是父类自己的虚函数;当子类的构造函数调用虚函数的时候,调用的是子类自己的虚函数

被折叠的 条评论
为什么被折叠?