クラスの関数宣言後の「デフォルト」とはどういう意味ですか? 質問する

クラスの関数宣言後の「デフォルト」とはどういう意味ですか? 質問する

defaultクラス内の関数宣言の横で使用されているのを見ました。これは何をするのでしょうか?

class C {
  C(const C&) = default;
  C(C&&) = default;
  C& operator=(const C&) & = default;
  C& operator=(C&&) & = default;
  virtual ~C() { }
};

ベストアンサー1

それは新しい C++11 機能

これは、その関数のコンパイラ生成バージョンを使用することを意味するため、本体を指定する必要はありません。

コンパイラがその関数を自動的に生成しないよう= delete指定するためにも使用できます。

移動コンストラクタと移動代入演算子の導入により、コンストラクタ、デストラクタ、代入演算子の自動バージョンが生成されるタイミングのルールは非常に複雑になりました。 と を使用すると、= defaultルール= deleteを覚える必要がなくなり、何が起きてほしいかを言うだけで済むため、物事が簡単になります。

おすすめ記事