c++ - 父类的父类中的虚函数

标签 c++ virtual-functions late-binding

<分区>

以下代码是后期绑定(bind) test() 方法,但它不应该提前绑定(bind)吗?因为 test() 方法在 B 类中不是虚拟的(但在 A 类中),我们使用的是 B 类的指针。

class A{
    public:
        virtual void test(){
            cout<<"test a";
        }
};
class B : public A{
    public:
        void test(){
            cout<<"Test b";
        }
};
class C: public B{
    public:
        void test(){
            cout<<"test c";
        }
};
int main(){
    B *bp;
    C objc;
    bp = &objc;
    bp->test();  // test c
}

最佳答案

一旦函数在类中被声明为virtual,它在继承自该类的类中始终为virtual,无论您使用virtual 关键字还是不是

所以在你的类 C 中,test() 函数实际上覆盖了 BA 的拥有 test() 函数。

关于c++ - 父类的父类中的虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37182808/

相关文章:

c++ - 使用 C++Builder 后期绑定(bind) COM 对象

java - 为什么这个 Java 方法通过声明的类型而不是运行时类型进行多态化?

c++ - 数组搜索和唯一增值

C++ Virtual 关键字作为一种避免包含代码单元的方法

c++ - Qt weatherinfo demo中,部分内容超出窗口边界

c++ - 虚拟赋值运算符 C++

c++ - 在没有基类(非派生)的类中为虚函数添加 final 关键字是否有意义

c++ - 我可以在函数内执行 "variable statements"而没有定义吗?

c++ - Flann vs. Brute Force 匹配器

c++ - 为什么当我从向导在 Visual Studio 2013 中创建 C++ 类时,我不需要包含来自 stdafx.h 的 header