来自C背景,我一直认为POD类型(例如整数)从未在C++中自动进行零初始化,但似乎这是完全错误的!
我的理解是,只有'裸'非静态POD值不会被填零,如代码片段所示.我做对了,还有其他重要的案例我错过了吗?
static int a;
struct Foo { int a;};
void test()
{
int b;
Foo f;
int *c = new(int);
std::vector<int> d(1);
// At this point...
// a is zero
// f.a is zero
// *c is zero
// d[0] is zero
// ... BUT ... b is undefined
}
Run Code Online (Sandbox Code Playgroud)