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
を覚える必要がなくなり、何が起きてほしいかを言うだけで済むため、物事が簡単になります。