c++ - 为什么这些成员没有被默认初始化?

标签 c++

在下面的代码中,我收到了这些警告消息:

Member 'year' was not initialized in this constructor

Member 'month'was not initialized in this constructor

Member 'day' was not initialized in this constructor

...

但是,对于 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") { };

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

最佳答案

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

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

关于c++ - 为什么这些成员没有被默认初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22600687/

相关文章:

c++ - 取消引用迭代器 vector 时出现段错误

c++ - 在小于 O(N) 的时间内找出点是否在 N 个(可能重叠的)矩形之一内

c++ - 通过分治算法计算数组的最大数

c++ - #include <initializer_list> 需要在基于范围的情况下使用初始化列表吗?

c++ - 在 C++/Linux 中为 Gsoap 使用 WSSE 插件

c++ - 如何在 QtCreator 中将控制台模式更改为 gui 模式?

C++ 级联类型转换

c++ - 如何创建 std::string 包装器,将 ptr 保留到 std::string 并将 ptr 保留到创建该包装器实例的类中的特殊类函数?

c++ - 当我知道类型时,如何避免虚拟调用?

c++ - 将 double 与 int 进行比较