#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;
注意,如果你改变了主函数,你不再使用你以前的val
在main()
了。这也是关键所在——您现在使用的是类数据成员!
关于如何避免使用this指针的讨论,请查看这个问题:为成员使用下划线后缀是否有益?
此时似乎也不需要包含fstream。
您在main
中的val
和对象i
中的val
之间创建了一个关系。
它们除了共享一个名字之外没有任何关系。
- 删除
main
中未设置的val
; - 输出
i.val
代替。