【发布时间】:2019-12-30 10:15:06
【问题描述】:
我已经阅读了多个讨论和 C++ 参考文章,但我仍然不确定。
考虑一下:
class Foo
{
int m;
};
m 在这些情况下是否保证为零?
A)
auto foo = new Foo;B)
auto foo = new Foo();C)
auto foo = new Foo{};
【问题讨论】:
标签: c++ initialization c++14
我已经阅读了多个讨论和 C++ 参考文章,但我仍然不确定。
考虑一下:
class Foo
{
int m;
};
m 在这些情况下是否保证为零?
A) auto foo = new Foo;
B) auto foo = new Foo();
C) auto foo = new Foo{};
【问题讨论】:
标签: c++ initialization c++14
是的,在 (B) 和 (C) 中,它将为零。在 (A) 中它是未初始化的。
如果您向Foo 添加自定义默认构造函数(除非您在类主体中=default 它),那么所有3 种情况下的行为都是相同的:m 只有在您初始化它时才会被初始化明确的。
【讨论】: