是否存在保证 int 成员被零初始化的情况?
Is there a case where an int-member is guaranteed to be zero-initialized?
我已经阅读了多篇讨论和 C++ 参考文章,但我仍然不确定。
考虑一下:
class Foo
{
int m;
};
在这些情况下,m
是否保证为零?
A) auto foo = new Foo;
B) auto foo = new Foo();
C) auto foo = new Foo{};
是的,在 (B) 和 (C) 中它将为零。在 (A) 中它是未初始化的。
如果您将自定义默认构造函数添加到 Foo
(除非您 =default
它在 class 正文中),那么所有 3 种情况下的行为都是相同的:m
仅当您显式初始化它时才会被初始化。
我已经阅读了多篇讨论和 C++ 参考文章,但我仍然不确定。
考虑一下:
class Foo
{
int m;
};
在这些情况下,m
是否保证为零?
A)
auto foo = new Foo;
B)
auto foo = new Foo();
C)
auto foo = new Foo{};
是的,在 (B) 和 (C) 中它将为零。在 (A) 中它是未初始化的。
如果您将自定义默认构造函数添加到 Foo
(除非您 =default
它在 class 正文中),那么所有 3 种情况下的行为都是相同的:m
仅当您显式初始化它时才会被初始化。