【发布时间】:2016-08-09 01:01:53
【问题描述】:
当我使用初始化列表创建一个结构,但初始化列表包含的元素比我的结构少时,我看到剩余的元素被初始化为零。
这是一个未定义的行为,我看到零是因为我的编译器 (VS2015) 决定为我将内存归零吗?
或者有人可以向我指出在 C++ 中解释这种行为的文档吗?
这是我的代码:
struct Thing {
int value;
int* ptr;
};
void main() {
Thing thing { 5 };
std::cout << thing.value << " " << thing.ptr << std::endl;
}
这就是它打印的内容:
5 00000000
最后一个元素是在没有初始化器的情况下归零的元素。
【问题讨论】:
-
这个
{ 5 }只设置第一个值5,其余的0 -
@DimChtz 所以就像初始化一个数组一样? int a[5] = {5} 会将我所有未指定的元素设置为零。
-
@DimChtz 你知道如何在文档中搜索它吗?
标签: c++ struct initialization