C ++程序重载一元预减运算符,并为“ =”赋值运算符提供支持

阅读:运算符重载及其规则

要实现运算符重载,我们需要使用“ operator”关键字。为了给运算符分配额外的任务,我们需要实现一个功能。这将提供便利以最自然的形式编写表达式。


例如:


S1是类样本的对象,则我们这样使用:S2 = --S1;

看程序:

using namespace std;
#include <iostream>

class Sample
{
	private:
		int count;
	public:
		//默认构造函数
		Sample()
		{ count = 0;}      

		//参数化的构造函数
		Sample(int c)
		{ count = c;}      


		//操作符重载,返回对象
		Sample operator--()
		{ 
			Sample temp;
			temp.count = --count;
			return temp;
		}

		//打印值
		void printValue()
		{
			cout<<"Value of count : "<<count<<endl;
		}
};

int main(){
	int i = 0;
	
	//对象声明
	Sample S1(100), S2;

	for(i=0; i< 5; i++)
	{    
		//调用运算符重载
		//在其他对象中分配值
		S2 = --S1;
		
		cout<<"S1 :"<<endl;
		S1.printValue();

		cout<<"S2 :"<<endl;
		S2.printValue();
	}

	return 0;    
}

输出结果

S1 :
Value of count : 99
S2 :
Value of count : 99
S1 :
Value of count : 98
S2 :
Value of count : 98
S1 :
Value of count : 97
S2 :
Value of count : 97
S1 :
Value of count : 96
S2 :
Value of count : 96
S1 :
Value of count : 95
S2 :
Value of count : 95

在此程序中,我们创建了一个名为Sample的类。它包含一个数据成员值。并且我们实现了一个功能,可以在=赋值运算符的支持下使预减运算符超载。

我们不能将后减与这种运算符重载方法一起使用。

我们也可以使用以下语句代替S2 = --S1:S2 = S1.operator-();