struct Line
{
Bounds bounds_;
Vector origin_;
uint32_t begin_;
uint32_t end_;
dist ascent_;
dist descent_;
};
使用如下:
Line line = {};
while (!parser.done()) {
line = Line(); // zero-initialize
...
}
Bounds
并且Vector
是非 POD 类,dist
是int64_t
.
但是,经过优化的 VC++11 32 位发布版本似乎至少line
在 while 循环中留下了未初始化的部分。为什么?根据类型名称后的括号是否与新的有所不同?,它应该对它进行零初始化,对吧?
我将结构成员的值记录到文件中:
- after
Line line = {};
: 非 POD 类型默认初始化,其他为 0。 - after
line = Line();
:POD 类型仍然默认初始化,其他包含随机值。