为什么我收到这个警告? "会员' x'未在此构造函数中初始化"

时间:2018-06-14 15:58:25

标签: c++ c++11 default-constructor

给出以下代码:

class Class {
    int x;
public:
    Class() = default;
};  

我收到以下警告:

  

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

这个警告的原因是什么?

2 个答案:

答案 0 :(得分:6)

var d1 = new Date($('#dte').val()); var end = d1 + $('#numberToAdd').val(); x,其默认初始化会使其具有不确定的值。最简单,最统一的解决方法是在声明中对其进行初始化。

int

您还可以class Class { int x{}; // added {}, x will be 0 public: Class() = default; }; int x = 5;提供默认值

答案 1 :(得分:4)

  

这个警告的原因是什么?

default ed默认构造函数不初始化基本类型的任何成员。因此,x未被初始化。

您可以使用构造函数中的成员初始化方法

来解决问题
Class() : x(0) {}

或类内成员初始化。

int x = 0;
Class() = default;