#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
。有人可以详细说明这个问题吗?
答案 0 :(得分:5)
您输出错误的val
。如上所述,您可以调用i.val
,因为您创建了数据成员val
public ,但您也可以选择为Integer类创建一个函数(“getter”) 。无论如何,我建议您了解私有数据成员以及如何使用这些成员。
getter方法看起来像
// in the class
int getVal() {
return val; // equal to return this->val
}
// in main()
cout << i.getVal() << endl;
请注意,如果您更改主要功能,则不再使用val
中之前的main()
。这也是重点 - 您现在正在使用类数据成员!
有关如何解决使用此指针的问题的讨论,请查看此问题:Is using underscore suffix for members beneficial?
此时您似乎也不需要包含 fstream 。
答案 1 :(得分:1)
您发明了val
中的main
与对象val
内的i
之间的关系。
val
; main
i.val
代替。