对象可以直接获取到自身封装的 普通函数 , 如果要访问虚函数 , 需要增加一次寻址操作 , 因此 这里建议不需要将有 多态 需求的函数声明为 虚函数 ;
C++ 中 指向某类型对象的 指针 的 运算 ,...没有添加任何 成员函数 与 成员方法 , 那么子类指针 与 父类指针 的步长是相同的 ;
一、不建议将所有函数都声明为 virtual 虚函数
C++ 类中 , 每个 成员函数 都可以声明为 virtual...这里建议不需要将有 多态 需求的函数声明为 虚函数 ;
二、多态的理解层次
多态的理解层次 :
多态实现效果 : 相同的代码调用 , 有不同的表现形态 ; 父类指针 可 指向子类对象 , 使用父类指针...调用 虚函数 可执行 子类对应的函数 ;
多态实现条件 : ① 继承 , ② 虚函数重写 , ③ 父类指针/引用指向子类对象 ;
父类指针 可以 指向 父类对象 , 也可以指向 不同的 子类对象 ;...;
有 虚函数 的类 , 在 编译时 , 会生成 虚函数表 , 对应类中生成一个 vptr 指针指向 虚函数表 ;
vptr 指针 是 与 对象绑定的 , 调用时 从 对象的 虚函数表 中查找虚函数