子类的对象内存布局包括两部分:父类和子类派生部分,所以执行父类的构造函数只不过是在构造子类对象的父类部分。因此子类对象的this指针当然是指向子类对象自己了。
每个含有虚函数的类有一张虚函数表(vtbl),表中每一项是一个虚函数的地址, 也就是说,虚函数表的每一项是一个虚函数的指针。
没有虚函数的C++类,是不会有虚函数表的。
从图中可以看到,当子类中的虚函数覆盖了父类中的虚函数后,在虚函数表中,子类的虚函数地址会替换父类的虚函数地址。
现在分析几种情况:
父类和子类中没有任何虚函数,这种情况下也就没有虚函数表,