c++编程练习 015:看上去好坑的运算符重载

北大程序设计与算法(三)测验题汇总(2020春季)


描述

程序填空

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

输入
多组数据,每组一行,整数n

输出
对每组数据,输出一行,包括两个整数, n-5和n - 8

样例输入
20
30

样例输出
15,12
25,22

来源
Guo Wei


分析

objInt-2-1-3;可知减号两边类型不一致,那么容易想到重载,即

MyInt &operator-(int i){
		nVal -= i;
		return *this;
	}
int Inc(int n) {
	return n + 1;
}
cout << Inc(objInt);

由上可知,传入的objInt被强制转化成整型,那么重载int()即可,

	operator int(){return nVal;}

执行效果
在这里插入图片描述

发布了196 篇原创文章 · 获赞 47 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_44116998/article/details/104367837