作为一个C语言背景下的开发者,我曾经认为POD类型(例如int)在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
}