0

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
        }
};

ただし、1 つはっきりしないことがあります。このクラスは何のために必要なのParentでしょうか。

4

2 に答える 2

4

インターフェースを利用するためにインターフェース以外のものから継承する必要はありませんが、そうすることができ、その答えはその方法を示しています。要点は、1 つまたは複数のインターフェイスから継承するだけでなく、クラスのベースとしてクラスを追加することもできます。クラスとインターフェイスのほぼすべての組み合わせが許可されます。

于 2013-03-28T08:08:15.423 に答える
1

実際、私には理由がわかりません。次のこともできます。

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

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

    ~Child()
    {
    }            
};

Parentすべては、プログラムのアーキテクチャと、実際に何が何であるかだけに依存しますChild。C# の例を見てくださいIDisposable。これは、それを実装するクラスによって使用されるリソースを破棄できるインターフェイスです。基本クラスを要求しても意味がありIDisposableません。基本クラスの機能が必要ない可能性があるため、使用するのが難しくなります (事実にもかかわらず、すべての .NET クラスは から派生しますObjectが、それは別の話です)。

実際のプログラムのアーキテクチャに関する詳細情報を提供していただければ、基本クラスが必要かどうかを判断できる場合があります。

指摘する価値のあることがもう 1 つあります。C++ では、IDemo は実際にはクラスであることに注意してください。これは、ユーザーの観点からのみインターフェイスです。したがって、私の例では、Child には実際基本クラスがあります。

于 2013-03-28T08:30:56.377 に答える