インターフェースを表すクラスを設定するにはどうすればよいですか? これは単なる抽象基本クラスですか?
ベストアンサー1
答えを詳しく説明するとブラッド・マレー仮想デストラクタを追加することで、インターフェイスの純粋仮想メソッド リストに 1 つの例外を作成することもできます。これにより、具体的な派生クラスを公開せずに、ポインターの所有権を別のパーティに渡すことができます。インターフェイスには具体的なメンバーがないため、デストラクタは何もする必要はありません。関数を仮想とインラインの両方として定義するのは矛盾しているように思えるかもしれませんが、そうではありません。
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
}
};
仮想デストラクタの本体を含める必要はありません。一部のコンパイラでは空のデストラクタを最適化するのに問題があるため、デフォルトを使用する方が適切です。