重複の可能性:
C++ でのさまざまなタイプの初期化
次のような基本コンストラクターの呼び出しに違いはありますか
Foo afoo;
対
Foo afoo();
はい: 1 つ目は変数定義、2 つ目は関数宣言です。ここで、これら 2 つの式の違いに関するさらに興味深い問題について説明します。
new Foo()
new Foo
違いがあるかどうかは、の種類Foo
とそのメンバーによって異なります。
Foo
、2つは同一ですこれはクラスのメンバーにも適用されることに注意してください。変数の場合、括弧を使用したフォームは使用できません。つまり、オブジェクトが初期化されていることを確認するには、使用する必要があります
Foo aFoo = Foo();
引数を取る明示的なコンストラクターがない場合、または不明な場合 (テンプレート コードなど)。