在我的 C++ Primer,第 5 版中,他们在第 43 页上谈到了默认初始化(强调我的):
未显式初始化的内置类型对象的值取决于它的定义位置。在任何函数体之外定义的变量都被初始化为零。
后来,在第 73 页,他们定义了一个新类,如下所示:
struct Sales_data {
std::string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;
};
这应该提供新标准的类内初始化程序的示例。在这种情况下,units_sold
和revenue
将被初始化为零。他们说,如果不是,变量将被默认初始化。
但这是我的问题:这种课堂初始化有什么意义?让他们只是默认初始化有什么问题?我问的原因是他们已经提到在任何函数体之外定义的变量都被初始化为零,在这种情况下,这些变量不在任何函数内部——它们在类定义中。所以默认初始化应该将这些变量初始化为零,不是吗?