为什么这些成员没有默认初始化?

Ele*_*rks 0 c++

在以下代码中,我收到以下警告消息:

成员'年'未在此构造函数中初始化

成员'month'未在此构造函数中初始化

成员'日'未在此构造函数中初始化

...

但是,我希望成员默认初始化为uint32_t类型,例如0.

typedef uint32_t bmd2_uint32;

class UnitTestCInterface : public UnitTest {
{
  private:
    bmd2_uint32 year;
    bmd2_uint32 month;
    bmd2_uint32 day;
    ...

  public:
    UnitTestCInterface() 
      : filename(nullptr), UnitTest("UNIT TEST: C Interface") { };
Run Code Online (Sandbox Code Playgroud)

为什么这些成员没有被默认初始化,我该怎么办呢?

mer*_*011 6

您可以使用初始化列表初始化它们:

UnitTestCInterface() 
      : year(0),month(0),day(0), filename(nullptr), UnitTest("UNIT TEST: C Interface")
     { };
Run Code Online (Sandbox Code Playgroud)