Fra*_*ank 17 c++ variables initialization class
快速初学者的问题:
我是否必须初始化简单的类成员变量,或者它们是否保证在任何情况下都被赋予默认值?
例:
class Foo {
int i;
// is i==0 or do I need the following line for that?
Foo() : i(0) {}
};
Run Code Online (Sandbox Code Playgroud)
谢谢!
utn*_*tim 16
我是否必须初始化简单的类成员变量,
不,你不会有初始化成员变量.如果你没有初始化它们,不要认为它们会有任何价值.
如果您创建一个测试程序并检查调试器如何初始化值,您可能会看到它们初始化为零,但这不能保证.这些值初始化为该位置堆栈内存中的任何内容.
或者他们是否保证在任何情况下都被分配了默认值?
他们无法保证获得任何价值.如果您有成员对象,则会为它们调用默认构造函数,但对于POD类型,没有默认初始化.
尽管您不必这样做,但最好初始化类的所有成员(以避免难以找到错误并明确表示初始化/构造函数调用).