我刚开始使用C ++。我有个问题。我应该在哪里初始化类成员变量?我使用一些成员函数为成员变量赋予了一些值。但静态分析工具抱怨构造函数中的成员初始化。请参阅以下示例:
TEST.CPP
#include<iostream>
using namespace std;
class Point {
private:
int x;
int y;
public:
Point(int r)
{
y = r;
}
inline void setXval(int x_val) {
x = x_val;
}
};
这里,该工具表示x未在构造函数中初始化。但我在成员函数中设置x值。这是正确的方法吗?或者我们应该始终初始化默认构造函数中的所有成员?任何帮助深表感谢。提前谢谢!
答案 0 :(得分:2)
所有变量都应该在构造函数中获得显式值。你没有给x
任何价值,所以你的工具是正确的。您可能会或者可能不会调用稍后为x
设置值的成员函数 - 您不能指望您(或代码的用户)在您需要某处x
的值之前调用该函数
答案 1 :(得分:1)
您的工具希望您使用初始化列表:
class Point {
private:
int x;
int y;
public:
Point(int x, int y) : x(x), y(y) {}
};
答案 2 :(得分:1)
您应该在构造函数中构造每个类成员。 会员职能可以改变班级成员&#39;价值,但它不能构建它们。
Point(int _x, int _y): x(_x), y(_y) {}