为什么我会收到此警告? "Member 'x' was not initialized in this constructor"
Why I get this warning? "Member 'x' was not initialized in this constructor"
给定以下代码:
class Class {
int x;
public:
Class() = default;
};
我收到以下警告:
Member 'x' was not initialized in this constructor
出现此警告的原因是什么?
x
是一个 int
并且其默认初始化使其具有不确定的值。最简单、最统一的修复方法是在其声明中对其进行值初始化。
class Class {
int x{}; // added {}, x will be 0
public:
Class() = default;
};
您也可以 int x = 5;
或 int x{5};
来提供默认值
What is the reason of this warning?
default
ed 默认构造函数不初始化基本类型的任何成员。因此,x
未初始化。
您可以使用构造函数中的成员初始化方法来解决问题
Class() : x(0) {}
或在-class成员初始化中。
int x = 0;
Class() = default;
给定以下代码:
class Class {
int x;
public:
Class() = default;
};
我收到以下警告:
Member 'x' was not initialized in this constructor
出现此警告的原因是什么?
x
是一个 int
并且其默认初始化使其具有不确定的值。最简单、最统一的修复方法是在其声明中对其进行值初始化。
class Class {
int x{}; // added {}, x will be 0
public:
Class() = default;
};
您也可以 int x = 5;
或 int x{5};
来提供默认值
What is the reason of this warning?
default
ed 默认构造函数不初始化基本类型的任何成员。因此,x
未初始化。
您可以使用构造函数中的成员初始化方法来解决问题
Class() : x(0) {}
或在-class成员初始化中。
int x = 0;
Class() = default;