C ++中的接口:为什么我需要一个接口类+另一个父类?

时间:2013-03-28 08:03:20

标签: c++ interface

This question很好地解释了如何在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 个答案:

答案 0 :(得分:4)

除了界面之外,你不需要继承任何东西来使用界面,但是你可以这样做,而答案会告诉你如何。关键是你不需要只从一个或几个接口继承,你也可以添加类作为你的类的基础 - 几乎任何类和接口的组合都是允许的。

答案 1 :(得分: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类都派生自{{1} },但这是另一个故事。)

如果您提供有关实际程序架构的更多信息,我们可以判断是否需要基类。

还有另一件值得指出的事情。请记住,在C ++中,IDemo实际上是一个类,它只是从您的角度来看的界面。所以在我的例子中,Child实际上基类。