[英]Where to initialize member variables of Class in C++
我刚开始使用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值。 这是正确的方法吗?或者我们应该始终初始化默认构造函数中的所有成员? 任何帮助深表感谢。 提前致谢 !
所有变量都应该在构造函数中获得显式值。 你没有给x
任何价值,所以你的工具是正确的。 您可能会或可能不会调用稍后设置x
的值的成员函数 - 您不能指望您(或代码的用户)在您需要某个x
的值之前调用该函数。
您的工具希望您使用初始化列表:
class Point {
private:
int x;
int y;
public:
Point(int x, int y) : x(x), y(y) {}
};
您应该在构造函数中构造每个类成员。 成员函数可以更改类成员的值,但不能构造它们。
Point(int _x, int _y): x(_x), y(_y) {}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.