遞增運算符( ++ )和遞減運算符( -- )是 C++ 語言中兩個重要的一元運算符。
下面的實例演示了如何重載遞增運算符( ++ )谱姓,包括前綴和后綴兩種用法。類似地冬三,您也可以嘗試重載遞減運算符( -- )莽使。
#include <iostream>
using namespace std;
class Time
{
private:
int hours; // 0 到 23
int minutes; // 0 到 59
public:
// 所需的構(gòu)造函數(shù)
Time(){
hours = 0;
minutes = 0;
}
Time(int h, int m){
hours = h;
minutes = m;
}
// 顯示時間的方法
void displayTime()
{
cout << "H: " << hours << " M:" << minutes <<endl;
}
// 重載前綴遞增運算符( ++ )
Time operator++ ()
{
++minutes; // 對象加 1
if(minutes >= 60)
{
++hours;
minutes -= 60;
}
return Time(hours, minutes);
}
// 重載后綴遞增運算符( ++ )
Time operator++( int )
{
// 保存原始值
Time T(hours, minutes);
// 對象加 1
++minutes;
if(minutes >= 60)
{
++hours;
minutes -= 60;
}
// 返回舊的原始值
return T;
}
};
int main()
{
Time T1(11, 59), T2(10,40);
++T1; // T1 加 1
T1.displayTime(); // 顯示 T1
++T1; // T1 再加 1
T1.displayTime(); // 顯示 T1
T2++; // T2 加 1
T2.displayTime(); // 顯示 T2
T2++; // T2 再加 1
T2.displayTime(); // 顯示 T2
return 0;
}
當(dāng)上面的代碼被編譯和執(zhí)行時磕瓷,它會產(chǎn)生下列結(jié)果:
H: 12 M:0
H: 12 M:1
H: 10 M:41
H: 10 M:42
代碼鏈接:https://github.com/karst87/cpp/tree/master/learning/com.runoob