【问题标题】:Why I get this warning? "Member 'x' was not initialized in this constructor"为什么我会收到此警告? “成员 'x' 未在此构造函数中初始化”
【发布时间】:2018-11-24 11:22:27
【问题描述】:
给出以下代码:
class Class {
int x;
public:
Class() = default;
};
我收到以下警告:
成员“x”未在此构造函数中初始化
这个警告的原因是什么?
【问题讨论】:
标签:
c++
c++11
default-constructor
【解决方案1】:
x 是一个int,其默认初始化使其具有不确定的值。最简单、最统一的解决方法是在其声明中对其进行值初始化。
class Class {
int x{}; // added {}, x will be 0
public:
Class() = default;
};
您也可以使用int x = 5; 或int x{5}; 来提供默认值
【解决方案2】:
这个警告的原因是什么?
defaulted 默认构造函数不会初始化基本类型的任何成员。因此,x 未初始化。
您可以通过使用构造函数中的成员初始化方法来解决问题
Class() : x(0) {}
或班级成员初始化。
int x = 0;
Class() = default;