トップページ > プログラム > 2015年09月26日 > uKQbY5Ux

書き込み順位&時間帯一覧

67 位/188 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000100000000001



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C++相談室 part119 [転載禁止]©2ch.net

書き込みレス一覧

C++相談室 part119 [転載禁止]©2ch.net
520 :デフォルトの名無しさん[sage]:2015/09/26(土) 13:19:28.92 ID:uKQbY5Ux
A a = A();
ってやったとき
・単にaが構築される
・右辺が構築されてから左辺のコピー(ムーブ)コンストラクタが呼ばれる
・左辺と右辺がそれぞれ構築されてから左辺のコピー(ムーブ)代入演算子が呼ばれる
どれ?
デバッガで追ってみるとコピー(ムーブ)コンストラクタ/代入演算子は呼ばれてないから
・単にaが構築される
のはずなんだけど
コピー(ムーブ)コンストラクタ/代入演算子がないクラスでこれやると
なぜかエラーが出るんだよね
A &a = A();
ってやるとコンパイル通るけどMSVCの独自拡張みたい?
素直に
A a();
ってやればいいんだけど
A *a = new A();
ってやったときとシンタックスの一貫性がなくて微妙。
(常に 変数 = コンストラクタ の形にしたい)
あと関数宣言として解釈されることがあってイライラ。
標準規格とかでどう定義されているのかとか、説明できる方がいたら教えて下さい。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。