C ++程序重载一元预增量运算符并为赋值运算符(=)提供支持
阅读:运算符重载及其规则
我们已经讨论了如何在C++中重载pre-increment运算符?但是该程序不支持赋值运算符,即如果我们要将增量对象的值存储在另一个对象中,则不能。
在本文中,我们将了解如何重载预递增运算符并为“=”赋值运算符提供支持?
例如:
S1是类样本的对象,则我们这样使用:S2=++S1;
要实现运算符重载,我们需要使用“operator”关键字。为了给运算符分配额外的任务,我们需要实现一个功能。这将提供便利以最自然的形式编写表达式。
看程序:
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; //打印值 of S1 object cout<<"S1 :"<<endl; S1.printValue(); //打印值 of S2 object cout<<"S2 :"<<endl; S2.printValue(); } return 0; }
输出结果
S1 : Value of count : 101 S2 : Value of count : 101 S1 : Value of count : 102 S2 : Value of count : 102 S1 : Value of count : 103 S2 : Value of count : 103 S1 : Value of count : 104 S2 : Value of count : 104 S1 : Value of count : 105 S2 : Value of count : 105
在此程序中,我们创建了一个名为Sample的类。它包含一个数据成员值。并且我们实现了一个在=(赋值运算符)的支持下使预递增运算符超载的功能。
我们不能通过这种运算符重载方法使用后增量。
我们也可以使用以下语句代替S2=++S1:S2=S1.operator++();