C ++のクラスメンバーの初期化リストは完全でなければなりませんか? それとも、クラス内のメンバー データの 1 つまたは 2 つを単純に初期化できますか?
前もって感謝します!
C ++のクラスメンバーの初期化リストは完全でなければなりませんか? それとも、クラス内のメンバー データの 1 つまたは 2 つを単純に初期化できますか?
前もって感謝します!
完全である必要はありません。デフォルトで構築可能な基本クラスと非PODクラス型を除外できますが、POD 型は初期化されないままになります。
明らかに、定数メンバーと参照は、メンバー初期化リストで初期化する必要があります。
int
コンストラクターがあります。Stroustrup The C++ Programming Language セクション 6.2.8 を参照してください。
int j = int();
これは j を 0 に初期化します (組み込み型のコンストラクターを明示的に使用した値は、その型に変換された 0 です。したがって、int() は 0 を書き込む別の方法です。組み込み型のデフォルトのコンストラクターは重要です。テンプレートは、組み込み型であっても、心配することなくデフォルトのコンストラクターを呼び出すことができます。
いいえ、完全である必要はありません。指定されていないメンバーは、デフォルトで構築されます (これには基本クラスが含まれます)。
明らかに、デフォルトで構築できないメンバーは明示的に初期化する必要があります。そして、小さな落とし穴 - 整数や浮動小数点数などの型は初期化されないため、初期値は未定義になります。