在多级继承中覆盖,中间派生 class 没有覆盖函数

override in multilevel inheritance with intermediate derived class not having the function overriden

在多级继承中,我可以在继承层次结构的后面覆盖基础 class 中的虚函数吗?举个例子m

class Base {
public : 
virtual void method1();

///
}

class Derived1 : Base {
public : 
void method2();
}

class Derived2 : Derived1 {
public :
void method1();
}

我可以使用多态访问 Derived2::method1() 吗?

Base* myClass = new Derived2();

myClass->method1();

一旦父 class 将函数标记为 virtual,"virtualness" 就会保留。无论您拥有多少继承级别,或者如果任何中间 classes 不覆盖该函数,一旦创建一个函数 virtual 该函数将 alwaysvirtual.

所以回答你的问题:是的,可以通过多态性使用 Derived2::method1。您显示的代码应该可以正常工作。