3

C ++のクラスメンバーの初期化リストは完全でなければなりませんか? それとも、クラス内のメンバー データの 1 つまたは 2 つを単純に初期化できますか?

前もって感謝します!

4

3 に答える 3

5

完全である必要はありません。デフォルトで構築可能な基本クラスと非PODクラス型を除外できますが、POD 型は初期化されないままになります。
明らかに、定数メンバーと参照、メンバー初期化リストで初期化する必要があります。

于 2010-07-22T22:53:24.343 に答える
1

intコンストラクターがあります。Stroustrup The C++ Programming Language セクション 6.2.8 を参照してください。

int j = int(); 

これは j を 0 に初期化します (組み込み型のコンストラクターを明示的に使用した値は、その型に変換された 0 です。したがって、int() は 0 を書き込む別の方法です。組み込み型のデフォルトのコンストラクターは重要です。テンプレートは、組み込み型であっても、心配することなくデフォルトのコンストラクターを呼び出すことができます。

于 2011-10-05T20:45:32.543 に答える
0

いいえ、完全である必要はありません。指定されていないメンバーは、デフォルトで構築されます (これには基本クラスが含まれます)。

明らかに、デフォルトで構築できないメンバーは明示的に初期化する必要があります。そして、小さな落とし穴 - 整数や浮動小数点数などの型は初期化されないため、初期値は未定義になります。

于 2010-07-22T22:55:07.803 に答える