2014-11-20 75 views
-2

我有一个基类,如果它是从基类调用的,我希望它调用派生类方法。这可能吗? 例如从基类中调用C++调用派生函数

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

'virtual'功能可能吗? – 2014-11-20 23:32:05

回答

1

您需要的关键字虚拟。 但是覆盖(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(); 
} 
3

你必须确保C是一个虚函数:

class A{ 
public: 
virtual void C(); 
void D(); 
}; 
相关问题