在多级继承中覆盖,中间派生 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
该函数将 always 是 virtual
.
所以回答你的问题:是的,可以通过多态性使用 Derived2::method1
。您显示的代码应该可以正常工作。
在多级继承中,我可以在继承层次结构的后面覆盖基础 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
该函数将 always 是 virtual
.
所以回答你的问题:是的,可以通过多态性使用 Derived2::method1
。您显示的代码应该可以正常工作。