没有多态效果
构造函数 的 作用就是 创建对象 ,
构造函数 最后 一行代码 执行完成 , 才意味着 对象构建完成 ,
对象构建完成后 , 才会将 vptr 指针 指向 虚函数表 ;
如果在 构造函数...中 调用 虚函数 , 则 没有 多态效果 ;
在 父类 的 构造函数中 , 调用了 父类的 虚函数 ;
此时 , 如果 创建 子类对象 , 执行 父类构造函数 , 仍然调用 父类 的虚函数 , 子类的虚函数...没有被调用 , 说明 构造函数 执行期间 , 多态没有生效 ;
参考 【C++】继承 ⑧ ( 继承 + 组合 模式的类对象 构造函数 和 析构函数 调用规则 ) 博客中的 构造函数 调用规则 :
构造函数...父类构造函数 中调用 fun 虚函数 , 只能调用 父类本身的 fun 函数 , 此时 vptr 指针没有指向 虚函数表 , 虚函数表未生效 , 只能调用 父类的 fun 函数本身 ;
父类的 构造函数...指针没有指向 虚函数表 , 虚函数表未生效 , 只能调用 子类的 fun 函数本身 ;
子类的 构造函数 调用完毕后 , vptr 指针 才指向 子类的 虚函数表 ;
代码示例 :
#include