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