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


#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;
}

当我执行我的代码时,我得到了0。我是c++的新手,我不理解this。有人能详细说明一下这个问题吗?

您正在输出错误的val。如前所述,您可以调用i.val,因为您将数据成员val 设置为公共,但是您也可以选择为Integer类创建一个函数(一个"getter")。无论如何,我建议学习private数据成员以及如何使用它们。

getter方法看起来像

// in the class
int getVal() {
  return val; // equal to return this->val
}
// in main()
cout << i.getVal() << endl;

注意,如果你改变了主函数,你不再使用你以前的valmain()了。这也是关键所在——您现在使用的是类数据成员!

关于如何避免使用this指针的讨论,请查看这个问题:为成员使用下划线后缀是否有益?

此时似乎也不需要包含fstream

您在main中的val和对象i中的val之间创建了一个关系。

它们除了共享一个名字之外没有任何关系。

  • 删除main中未设置的val;
  • 输出i.val代替。

相关内容

最新更新