【发布时间】:2011-03-04 10:36:39
【问题描述】:
快速初学者的问题:
我是否必须初始化简单的类成员变量,或者在任何情况下都保证为它们分配默认值?
例子:
class Foo {
int i;
// is i==0 or do I need the following line for that?
Foo() : i(0) {}
};
谢谢!
【问题讨论】:
标签: c++ class variables initialization
快速初学者的问题:
我是否必须初始化简单的类成员变量,或者在任何情况下都保证为它们分配默认值?
例子:
class Foo {
int i;
// is i==0 or do I need the following line for that?
Foo() : i(0) {}
};
谢谢!
【问题讨论】:
标签: c++ class variables initialization
我必须初始化简单的类吗 成员变量,
不,您没有有来初始化成员变量。如果你不初始化它们,不要假设它们会有任何价值。
如果您编写一个测试程序并在调试器中检查这些值是如何初始化的,您可能会看到它们被初始化为零,但这并不能保证。这些值被初始化为该位置堆栈上内存中的任何内容。
或者他们保证会被分配 无论如何它们的默认值?
不保证它们会被分配任何值。如果您有成员对象,将为它们调用默认构造函数,但对于 POD 类型,没有默认初始化。
即使您不必这样做,最好初始化类的所有成员(以避免难以发现错误并明确表示初始化/构造函数电话)。
【讨论】:
是的,这是必要的。您的对象将在堆栈或堆上分配。您无法知道内存包含哪些值,并且运行时不保证为您清零,因此您必须初始化变量。
【讨论】: