欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++ 运算符重载 002:看上去好坑的运算符重载

程序员文章站 2024-03-17 18:58:40
...

002:看上去好坑的运算符重载

描述
程序填空

#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

1.可以减去int,故需要重载-
2.可以作为int类型,故需要重载类型转换运算符
MyInt &operator -( int n) {nVal -=n; return *this;} //返回-号作用的对象
operator int() { return nVal;} //返回nVal值

#include <iostream> 
using namespace std;
class MyInt 
{ 
	int nVal; 
	public: 
	MyInt( int n) { nVal = n ;}
// 在此处补充你的代码
	MyInt& operator -(int n){       //返回引用,可以作为左边继续减 
		nVal-=n;
		return *this; 
	}
	 operator int(){ return nVal;
	 }

// -号运算符
//-1=-1,-2=-2 ,-3=-1 
}; 
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;
}
相关标签: 面向对象C++