为什么我会收到此警告? "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?

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

您可以使用构造函数中的成员初始化方法来解决问题

Class() : x(0) {}

或在-class成员初始化中。

int x = 0;
Class() = default;