【发布时间】:2015-01-21 11:11:44
【问题描述】:
使用 Microsoft Visual Studio Ultimate 2013 更新 4 和以下代码:
#include <iostream>
auto main() -> int {
struct Base { int a; };
struct Derived : Base { int b; };
auto foo = Derived();
std::cout << foo.a << " " << foo.b;
}
我得到这个输出:
-858993460 -858993460
但我期待:
0 0
为什么foo 没有初始化为零?
【问题讨论】:
-
您是否尝试过先搜索答案?
-
因为不应该这样。
-
但是根据标准,成员应该是零初始化的。并且 gcc/clang 根据需要对对象进行零初始化。
-
@Dialectus:恐怕这是他的尝试。
-
@ForEveR 你有指向标准中相关条款的指针吗?