我有一个基类,如果从基类调用它,我想要它调用派生类方法。这可能吗? 例如
class A{
public:
C();
D();
};
class B:public A{
public:
C();
}
void A::D(){
C();
}
main(){
B b;
b.D();
}
因此b.D()
调用函数A::D()
,后者又调用B::C()
。这是默认行为还是有办法实现它?
答案 0 :(得分:3)
您必须确保C是虚函数:
class A{
public:
virtual void C();
void D();
};
答案 1 :(得分:1)
您需要关键字虚拟。 但是 override (C ++ 11)是可选的,有助于在编译期间查找错误,但我建议使用它。
class A {
public:
virtual void C();
void D();
};
class B : public A {
public:
void C() override;
}
void A::D() {
C();
}
int main() {
B b;
b.D();
}