3

重複の可能性:
コンストラクターのショートカット

次のコードはC++でも同じですか?

ピース1:

MyFunnyClass o = MyFunnyClass();

ピース2:

MyFunnyClass o;

次のものが同等ではないことは承知していますが、上の2つについてはよくわかりません。

MyFunnyClass o = MyFunnyClass () ;

MyFunnyClass o;
o = MyFunnyClass();
4

1 に答える 1

2
MyFunnyClass o () ;

これは、オブジェクトをまったく定義しません。これは最も厄介な解析です。oは何も受け取らず、MyFunnyClass宣言したを返す関数です。

実際の構文は次のようになります

MyFunnyClass o;

これはデフォルトでオブジェクトを構築します。

MyFunnyClass o = MyFunnyClass();

値-オブジェクトを作成し、それをコピーまたはに移動しoます。ここでエリジオンを期待してください。

于 2012-09-17T17:42:47.550 に答える