当方法参数具有相同名称时,我们如何引用字段?

Ric*_*lev 0 c++ this

#include<iostream>
#include<fstream>
using namespace std;

class Integer {
public:
    int val;
    Integer(int val = 0) {
        this->val = val;
    }
    void setVal(int val) {
        this->val = val;
    }
};

int main()
{
    int val;
    Integer i;
    i.setVal(8);
    cout << val << endl;
}
Run Code Online (Sandbox Code Playgroud)

当我执行我的代码时,我得到了0.我是C++的新手,我不明白this.有人可以详细说明这个问题吗?

Vic*_*and 5

你输错了val.如上所述,您可以调用,i.val因为您将数据成员val 公开,但您也可以选择为Integer类创建函数("getter").无论如何,我建议学习私有数据成员以及如何使用它们.

getter方法看起来像

// in the class
int getVal() {
  return val; // equal to return this->val
}

// in main()
cout << i.getVal() << endl;
Run Code Online (Sandbox Code Playgroud)

请注意,如果你改变你不使用你以前的主要功能val中main()了.这也是重点 - 您现在正在使用类数据成员!

有关如何解决使用此指针的需求的讨论,请查看以下问题:使用下划线后缀对成员有益吗?

此时似乎您不需要包含fstream.