繁体   English   中英

在C ++中初始化Class的成员变量的位置

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM