[解決済み] default/copy/move ctorとcopy/move assignment operatorの自動生成の条件?
2022-05-14 07:30:31
質問
コンパイラが通常デフォルトコンストラクタ、コピーコンストラクタ、および代入演算子を自動生成する条件について、記憶を呼び起こしたいと思います。
いくつかのルールがあったように記憶していますが、覚えていませんし、オンラインで信頼できるリソースを見つけることもできません。どなたか助けていただけないでしょうか。
どのように解決するのですか?
以下、"auto-generated"とは、"暗黙のうちにdefaultedとして宣言され、deletedとして定義されていない"を意味します。特殊なメンバ関数が宣言されているが、削除されたと定義されている状況があります。
- デフォルトコンストラクタは、ユーザが宣言したコンストラクタがない場合、自動生成されます (§12.1/5) 。
- コピー コンストラクタは、ユーザーが宣言した移動コンストラクタまたは移動代入演算子がない場合に自動生成されます(C++03 には移動コンストラクタまたは移動代入演算子がないため、C++03 では "always" と単純化されます) (§12.8/8).
- コピー代入演算子は、ユーザーが宣言した移動コンストラクタまたは移動代入演算子がない場合、自動生成されます (§12.8/19).
- デストラクタは、ユーザが宣言したデストラクタがない場合に自動生成されます (§12.4/4)。
C++11 以降のみ。
- ユーザーが宣言したコピー コンストラクタ、コピー代入演算子、またはデストラクタがなく、生成された移動コンストラクタが有効である場合に自動生成されます (12.8/10 節)。
- 移動代入演算子は、ユーザが宣言したコピーコンストラクタ、コピー代入演算子、デストラクタがなく、生成された移動代入演算子が有効であれば自動生成されます (例: 定数メンバの代入が必要ない場合) (§12.8/21).
関連
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み】致命的なエラー LNK1169: ゲームプログラミングで1つ以上の多重定義されたシンボルが発見された
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み】Cygwin Make bash コマンドが見つかりません。
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み】Visual C++で "Debug Assertion failed "の原因となる行を見つける。
-
[解決済み】ファイルから整数を読み込んで配列に格納する C++ 【クローズド
-
[解決済み】なぜC++コンパイラはoperator==とoperator!=を定義しないのでしょうか?
-
[解決済み] 代入演算子と `if (this != &rhs)` の移動
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ クラスヘッダが含まれているときに「不明な型」があるのはなぜですか?重複
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み】C++エラー:の初期化に一致するコンストラクタがありません。
-
[解決済み】リンカーエラーです。"リンカ入力ファイルはリンクが行われていないため未使用"、そのファイル内の関数への未定義参照
-
[解決済み】C++の余分な資格エラー
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み] 配列のベクトルを扱う正しい方法