は、私は次のように設定C++クラスがあるとします。オブジェクトのC++メンバ配列のデフォルト初期化?
class Foo{
public:
struct Pair{
int x;
int y;
Pair(){ x = 2; y = 4; }
};
private:
Pair pairArr[16];
}
そうpairArrを初期化せずに、その内部のペアの構造体のデフォルト値は何ですか? C++は(x = 2、y = 4で初期化する)コンストラクタを呼び出すか、まだ作成されていないオブジェクトですか?インデックスを自分で初期化するまで、私に "迷惑な"オブジェクトの配列を残していますか?
プリミティブデータ型の配列であれば、デフォルトで初期化されています(int型の配列を持つ場合はすべて0になります)。しかし、私の構造体のようなもっと複雑なオブジェクトの場合、この動作が成立するかどうかはわかりません。
実際には、コンストラクタで*初期化子リスト*を使用することを学ぶべきです。ここではそれほど大きな違いはありませんが、メンバーのタイプに応じてctor本体を使用するのと比べて実際のパフォーマンスに影響を与えることができます。 –
"原子型の配列であるかどうかはわかっていますが、デフォルトで初期化されています" - あなたは間違っていることを知っています。また、「原子型」の概念はどこで手に入れましたか? –
あなたの配列のオブジェクトは*デフォルトで初期化されます*。あなたのクラスは(ユーザ定義のコンストラクタのため)集約型ではないので、デフォルトのコンストラクタは配列 – WhiZTiM