, 则 没有 多态效果 ;
一、vptr 指针初始化问题
1、vptr 指针与虚函数表
" 虚函数表 " 由 C++ 编译器 负责 创建 与 维护 , 被 virtual 关键字 修饰的 虚函数 ,...会自动 被 C++ 编译器 存储到 " 虚函数表 " 中 , 类中会自动添加一个 " vptr 指针 " 成员变量 指向 虚函数表 ;
2、vptr 指针初始化时机
对象中的 vptr 指针 指向 虚函数表...,
在 对象 被 创建时 , 由 C++ 编译器 对 对象中的 vptr 指针进行初始化操作 ,
对象 创建完成 后 , 也就是 虚函数 整理完毕 , 全部放到 虚函数表 中后 ,
vptr 指针 才会指向...中 调用 虚函数 , 则 没有 多态效果 ;
在 父类 的 构造函数中 , 调用了 父类的 虚函数 ;
此时 , 如果 创建 子类对象 , 执行 父类构造函数 , 仍然调用 父类 的虚函数 , 子类的虚函数...没有被调用 , 说明 构造函数 执行期间 , 多态没有生效 ;
参考 【C++】继承 ⑧ ( 继承 + 组合 模式的类对象 构造函数 和 析构函数 调用规则 ) 博客中的 构造函数 调用规则 :
构造函数