2013-01-03 60 views
1

我們是否必須在直接派生類中強制定義C++中的純虛函數?或者我們可以避免它,以便我們只能在具體的類中定義它?這是如何實現的?避免在立即派生類中定義C++中的純虛函數?

+2

你可以試試它... –

+0

另請參閱:http://stackoverflow.com/a/8931630/33732 –

回答

4

沒有人強迫你執行純粹的virtual函數,所以你不必這樣做。你的課只是抽象的。在派生類中,只需將聲明保留或重新聲明爲虛擬純。

struct Base 
{ 
    virtual void foo() = 0; 
}; 

//this is OK, X is abstract 
struct X : Base 
{ 
}; 

//this is also OK, redundant, and Y is abstract 
struct Y : Base 
{ 
    virtual void foo() = 0; 
}; 
+0

在今天的採訪中,我今天講的是同樣的事情,而且我的採訪者對我反駁說它是必須在直接派生類中定義它! – SRINI794

+0

通過此鏈接向您的面試官發送一封電子郵件。 – Chad

+0

@ SRINI794那麼,如果你沒有得到這份工作,你應該很高興。最好的工作是那些你可以真正從人身上學到一些東西的人,而不是知道更多,並且可以教你。 :) –

1

絕對沒有要求過定義在類中的任何純虛函數,直到你開始創建實際對象類的

抽象類旨在用作其他類的基礎。抽象類層次結構可以是任意深度的,這意味着您不需要在直接後代中定義純虛擬方法。

1

如果有一些虛擬純方法沒有實現,那麼派生類就是抽象的。如果你想實例化它,你必須在某個派生類中實現該方法。

相關問題