当初はデストラクタのみの質問として投稿しましたが、現在はデフォルト コンストラクタの考慮を追加しています。元の質問は次のとおりです。
クラスに仮想デストラクタを与えたいが、それ以外はコンパイラが生成するものと同じである場合は、次を使用できます
=default
。class Widget { public: virtual ~Widget() = default; };
しかし、空の定義を使用して、より少ない入力で同じ効果を得ることができるようです:
class Widget { public: virtual ~Widget() {} };
これら 2 つの定義の動作が異なる方法はありますか?
この質問に対して投稿された回答に基づいて、デフォルトのコンストラクターの状況は似ているようです。=default
デストラクタの " " と " "の意味にほとんど違いがないことを考えると{}
、デフォルト コンストラクタのこれらのオプションにも同様に意味の違いはほとんどないのでしょうか? つまり、そのタイプのオブジェクトが作成され、破棄されるタイプを作成したいと仮定すると、なぜ私は言いたいのですか?
Widget() = default;
それ以外の
Widget() {}
?
元の投稿が SO ルールに違反している後にこの質問を拡張した場合は、お詫び申し上げます。デフォルトのコンストラクターについてほぼ同じ質問を投稿することは、あまり望ましくないオプションだと思いました。