C ++从基类调用派生函数

时间:2014-11-20 23:30:08

标签: c++ inheritance

我有一个基类,如果从基类调用它,我想要它调用派生类方法。这可能吗? 例如

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()。这是默认行为还是有办法实现它?

2 个答案:

答案 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();
}