2013-03-28 67 views
0

This question很好地解釋瞭如何在C++中創建接口。下面是代碼:C++中的接口:爲什麼我需要一個接口類+另一個父類?

class IDemo 
{ 
    public: 
     virtual ~IDemo() {} 
     virtual void OverrideMe() = 0; 
}; 

class Parent 
{ 
    public: 
     virtual ~Parent(); 
}; 

class Child : public Parent, public IDemo 
{ 
    public: 
     virtual void OverrideMe() 
     { 
      //do stuff 
     } 
}; 

的一件事是,我不清楚,雖然:我需要什麼該類Parent

+2

雖然我不確定自己,但我想這僅僅是爲了說明在這種情況下多重繼承的概念。基本上它顯示瞭如何在一個類中將多個「接口」(或父類)組合在一起。 – ATaylor 2013-03-28 08:05:39

回答

4

除了您的界面之外,您不需要繼承任何界面以利用界面,但是您可以這樣做,並且該答案顯示了您的界面。關鍵是你不需要只從一個或幾個接口繼承,你也可以添加類作爲你的類的基礎 - 幾乎任何類和接口的組合都是允許的。

1

其實我不知道爲什麼。你可以做下面還有:

class IDemo 
{ 
public: 
    virtual ~IDemo() {} 
    virtual void OverrideMe() = 0; 
}; 

class Child : public IDemo 
{ 
public: 
    virtual void OverrideMe() 
    { 
     //do stuff 
    } 

    ~Child() 
    { 
    }    
}; 

一切只取決於你的程序的架構和實際ParentChild是。看一下C#的例子 - IDisposable是一個接口,它允許一個處理由類實現的資源。要求基類沒有意義 - 它甚至會使用IDisposable更難以使用,因爲也許我不想要基類功能(儘管事實上,每個.NET類都來自Object,但這是另一回事)。

如果您提供了有關您的實際程序體系結構的更多信息,我們可以判斷是否需要基類。

還有一件值得指出的事情。請記住,在C++中,IDemo實際上是一個類,它只是從你的角度來看的一個接口。所以在我的例子中,Child其實一個基類。

+0

感謝您的回答。我只對如何做到這一點感興趣,而實際上並沒有我使用atm的背景。 – mort 2013-03-28 08:35:55

相關問題