【发布时间】:2009-10-27 01:38:22
【问题描述】:
我很确定内置类型的数组是未初始化的,而 UDT 的数组是默认初始化的。
int foo[5]; // will contain junk
Foo foo[5]; // will contain 5 Foo objects that are default initialized
无论数组是在堆栈还是堆上分配,都会发生这种情况。
但是,我发现很难找到这方面的权威来源。 Bjarne 指出:
“数组和结构的成员是否默认初始化取决于数组或结构是否是静态的”这并不能告诉我太多。
我也尝试在标准中找到一些东西,但到目前为止无济于事。
有没有人知道权威来源来证实上述内容?
【问题讨论】:
-
Foo的示例取决于Foo是什么 - 如果它是 POD 结构(例如struct Foo { int x; }),它不会被默认初始化。
标签: c++ arrays initialization