2011-08-07 43 views
3

我想在cpp中創建接口,以便任何類實現該類,然後該類必須實現父類的函數。如果所有功能都沒有實現,那麼它必須顯示錯誤。cpp中的接口

class parent { // interface class 
    public : 
     virtual void display(); 
} 
class base : public parent { 
    void display(); // this method must be implemented in this class 
} 

請幫我在C++中繼承這種類型。

+0

如果你打算通過一個ptr刪除父母,你也需要一個虛擬dtor:'virtual〜parent(){}' –

+0

@andeas,這只是一個示例代碼,但我在我的實際代碼中做了它。 –

回答

9

使用純虛成員函數:

virtual void display() = 0; 

這使得抽象類(你不能讓它的實例),以及任何非抽象的派生類必須實現這樣的功能。

這裏有一個更正式的定義維基百科鏈接: http://en.wikipedia.org/wiki/Virtual_function#Abstract_classes_and_pure_virtual_functions

+3

Nitpick,但派生類不需要實現純虛擬方法,但如果它們不那麼它們也是抽象的。 – john

+0

好點,編輯。 –

+0

@john,非常感謝。 –

7

只改變一個

class parent { // interface class 
    public : 
     virtual void display() = 0; 
} 

這就是所謂的在C純虛函數++。

0

可以使用抽象類(或純虛類):

class AB { 
public: 
    virtual void f() = 0; 
}; 

抽象類可以在像在Java/C#接口CPP可以使用,儘管它們在編譯器的透視不同。