1. ホーム
  2. c++

[解決済み】クラスの関数宣言の後の "default "の意味とは?

2022-04-07 06:26:49

質問

私が見たのは default は、クラス内の関数宣言の隣に使用されています。これは何をするためのものですか?

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

解決方法は?

それは C++11の新機能 .

その関数のコンパイラが生成したものを使いたいので、ボディを指定する必要はない、という意味です。

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

移動コンストラクタと移動代入演算子の導入により、コンストラクタ、デストラクタ、代入演算子の自動生成のルールは非常に複雑になっています。使用方法 = default= delete を使えば、ルールを覚える必要がなく、ただ起こしたいことを言うだけなので簡単です。