2014-11-20 74 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(); 
}; 
相關問題