#include <iostream>
using namespace std;
class MyInt
{
int nVal;
public:
MyInt( int n) { nVal = n ;}
// 在此处补充你的代码
};
int Inc(int n) {
return n + 1;
}
int main () {
int n;
while(cin >>n) {
MyInt objInt(n);
objInt-2-1-3;
cout << Inc(objInt);
cout <<",";
objInt-2-1;
cout << Inc(objInt) << endl;
}
return 0;
}
输入
20
30
输出
15,12
25,22
考点:【友元函数、运算符重载】
1、objInt-2-1-3;
相当于objInt-6
所以需要重载运算符-
,暂时理解为20-6=14
2、Inc(objInt)
使得由原来的值14变成了15,但是题目所提供的int Inc(int n)
;首先,形参类型不匹配;其次,不是通过对象名.
调用,说明是个全局函数,不属于任何类;综上,我们需要重载的是一个友元函数
3、对于重载运算符-
,操作完这个数之后结果还需要继续使用,所以是个引用类型
4、综上可得
class MyInt
{
int nVal;
public:
MyInt( int n) { nVal = n ;}
// 在此处补充你的代码
MyInt & operator- (const int & m){
nVal -= m;
return *this;
}
friend int Inc(MyInt & m){
return m.nVal + 1;
}
};