私の C++ Primer 第 5 版では、デフォルトの初期化について 43 ページで次のように述べています (強調は私のものです)。
明示的に初期化されていない組み込み型のオブジェクトの値は、定義されている場所によって異なります。関数本体の外側で定義された変数はゼロに初期化されます。
後で、73 ページで、次のような新しいクラスを定義します。
struct Sales_data {
std::string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;
};
これは、新しい標準のクラス内初期化子の例を提供することになっています。この場合、units_sold
andrevenue
はゼロに初期化されます。そうでない場合、変数はデフォルトで初期化されると彼らは言います。
しかし、これは私の質問です: このクラス内初期化のポイントは何ですか? それらをデフォルトで初期化することの何が問題になっていますか? 私が尋ねる理由は、関数本体の外側で定義された変数はゼロに初期化されるとすでに述べているためです。この場合、これらの変数は関数内ではなく、クラス定義にあります。したがって、デフォルトの初期化では、これらの変数をゼロに初期化する必要がありますね。