配列を宣言すると、すべての変数/オブジェクトが宣言されます。しかし、クラスにコンストラクタがある場合、オブジェクトはどうなりますか?私が使用しているクラスは、2つのコンストラクタを持っています - 1つは引数がなく、もう1つはいくつかの引数を持ちます。最初のコンストラクタは宣言の後で有効になりますか?または、コンストラクタが有効になりませんか?C++コンストラクタを持つオブジェクトを配列に追加する
最初の場合は、コンストラクタを置き換える関数を作成する必要があります。
したがって、新しく宣言された配列のオブジェクトはどうなりますか?
あなたは意味はFooのx [] = {**新しい**はFoo(1)、...}? –
@ThanhNguyen: 'フー(はFoo *)'コンストラクタを必要とし、そのコンストラクタは '(非常に悪いスタイルになります)その引数をDELETE'ていない場合は、メモリリークを引き起こすだろう。 –
@ThanhNguyen:いいえ、私は 'Foo x [] = {Foo(1)};'を意味します。 'Foo x [] = {1};'と言うこともできますが、これは少し異なります.1つの引数のコンストラクタと暗黙のコピーコンストラクタが必要です。 C++ 11では、 'Foo x [] = {{true、 'a}};'も許可することで、これをより柔軟にすることができますが、ここでもアクセス可能な暗黙のコピーコンストラクタが必要です。 –