C++:"虚拟"是否继承给所有后代

Jon*_*han 8 c++ inheritance virtual-functions

假设以下简单情况(注意虚拟的位置)

class A {
    virtual void func();
};

class B : public A {
    void func();
};

class C : public B {
    void func();
};
Run Code Online (Sandbox Code Playgroud)

请拨打以下电话B::func()C::func()

B* ptr_b = new C();
ptr_b->func();
Run Code Online (Sandbox Code Playgroud)

ybu*_*ill 7

  1. 你的代码是无效的C++.类定义中的括号是什么?
  2. 它取决于指向的对象的动态类型pointer_to_b_type.
  3. 如果我理解你真正想问的是什么,那么'是'.这叫C::func:

    C c;
    B* p = &c;
    p->func();
    
    Run Code Online (Sandbox Code Playgroud)


Naw*_*waz 6

使用指针和引用的示例.

在线演示:http://ideone.com/fdpU7