15 看上去好坑的运算符重载

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

}; 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值