c++中在何处初始化Class的成员变量

Where to initialize member variables of Class in C++

本文关键字:成员 变量 Class 初始化 在何处 c++      更新时间:2023-10-16

我刚开始使用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) {}