【问题标题】:Is there a case where an int-member is guaranteed to be zero-initialized?是否存在保证 int 成员为零初始化的情况?
【发布时间】: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


    【解决方案1】:

    是的,在 (B) 和 (C) 中,它将为零。在 (A) 中它是未初始化的。

    如果您向Foo 添加自定义默认构造函数(除非您在类主体中=default 它),那么所有3 种情况下的行为都是相同的:m 只有在您初始化它时才会被初始化明确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-05
      • 2021-04-05
      • 2021-09-11
      • 1970-01-01
      • 2014-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多