2013-03-28 68 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

相关问题