1. ホーム
  2. c++

[解決済み] C++でインターフェイスを宣言するには?

2022-03-18 03:34:22

質問

インターフェイスを表すクラスはどのように設定するのですか? これは単なる抽象的な基底クラスなのでしょうか?

どのように解決するのですか?

による回答を展開する。 ブラッドグマーレイ この場合、インターフェイスの純粋な仮想メソッドリストに、仮想デストラクタを追加することで、1つの例外を作りたいと思うかもしれません。これによって、具象派生クラスを公開することなく、ポインタの所有権を他の人に渡すことができます。インターフェイスは具象メンバを持たないので、デストラクタは何もする必要がありません。関数をvirtualとinlineの両方で定義するのは矛盾しているように見えるかもしれませんが、そうではありません。

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

コンパイラによっては、空のデストラクタを最適化するのが面倒な場合があります。