当父类有虚汗数, 子类继承; 定义子类对象, 可以清楚的看到vtbl中的vptl是在子类构造函数调用之前被改写的.
winxp + vs.net2005
代码如下:
输出为:
解释一下输出。
头2行很直观。
第3行是调用基类构造函数构造几类子对象, 第4行时调用B本身的构造函数继续初始化对象。
那么, vptr的修改必定是在两个构造函数调用之间被修改的 :)
当父类有虚汗数, 子类继承; 定义子类对象, 可以清楚的看到vtbl中的vptl是在子类构造函数调用之前被改写的.
winxp + vs.net2005
代码如下:
输出为:
解释一下输出。
头2行很直观。
第3行是调用基类构造函数构造几类子对象, 第4行时调用B本身的构造函数继续初始化对象。
那么, vptr的修改必定是在两个构造函数调用之间被修改的 :)