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

时间:2014-03-24 03:40:06

标签: c++

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

  

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

     

会员'月'未在此构造函数中初始化

     

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

     

...

但是,对于uint32_t类型,我希望成员默认初始化为0,例如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") { };

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

1 个答案:

答案 0 :(得分:6)

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

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