C++11 では、自動生成されるデストラクタを宣言できます。
struct X {
virtual ~X() = default;
};
また、デストラクタを純粋仮想として宣言することもできます:
struct X {
virtual ~X() = 0;
};
私の質問は、デストラクタを自動生成と純粋仮想の両方に宣言する方法ですか? 次の構文は正しくないようです。
struct X {
virtual ~X() = 0 = default;
};
これもそうではありません:
struct X {
virtual ~X() = 0, default;
};
これも:
struct X {
virtual ~X() = 0 default;
};
編集:質問の目的に関するいくつかの明確化。基本的に、空のクラスをインスタンス化できない基本クラスにしたいのですが、派生クラスはインスタンス化できるため、クラスには純粋な仮想デストラクタが必要です。しかし一方で、定義を .cpp ファイルで提供したくありません。したがって、に相当する何らかのメカニズムが必要default
です。誰かが問題を解決するアイデアを持っているのだろうか。