4w4:第四周程序填空题2
描述
下面的MyInt类只有一个成员变量。MyInt类内部的部分代码被隐藏了。假设下面的程序能编译通过,且输出结果是:
4,1
请写出被隐藏的部分。(您写的内容必须是能全部放进 MyInt类内部的,MyInt的成员函数里不允许使用静态变量)。
#include <iostream>
using namespace std;
class MyInt {
int nVal;
public:
MyInt(int n) { nVal = n; }
int ReturnVal() { return nVal; }
// 在此处补充你的代码
};
int main () {
MyInt objInt(10);
objInt-2-1-3;
cout << objInt.ReturnVal();
cout <<",";
objInt-2-1;
cout << objInt.ReturnVal();
return 0;
}
输入
无
输出
4,1
样例输入
无
样例输出
4,1
解题思路:要改变类内部私有成员的值,必须使用引用或者指针。针对你的情况应该在operator前加入&。而重载为成员函数意味着参数个数为运算符目数减一,即:
#include <iostream>
using namespace std;
class MyInt {
intnVal;
public:
MyInt(intn) { nVal = n; }
intReturnVal() { return nVal; }
//在此处补充你的代码
MyInt&operator - (int s)
{
nVal-= s;
return*this;
}
};
int main() {
MyIntobjInt(10);
objInt- 2 - 1 - 3;
cout<< objInt.ReturnVal();
cout<< ",";
objInt- 2 - 1;
cout<< objInt.ReturnVal();
return0;
}