遞增遞減運算符重載
遞增運算符( ++ )和遞減運算符( – )是 C++ 語言中兩個重要的一元運算符。
下面的實例演示瞭如何重載遞增運算符( ++ ),包括前綴和後綴兩種用法。類似地,您也可以嘗試重載遞減運算符( – )。
#include <iostream>
using namespace std;
class Time
{
private:
int hours; // 0 到 23
int minutes; // 0 到 59
public:
// 所需的構造函數
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;
}
運行
H: 12 M:0
H: 12 M:1
H: 10 M:41
H: 10 M:42
下標運算符 [] 重載
下標操作符 [] 通常用於訪問數組元素。重載該運算符用於增強操作 C++ 數組的功能。
下面的實例演示瞭如何重載下標運算符 []。
#include <iostream>
using namespace std;
const int SIZE = 10;
class safearay
{
private:
int arr[SIZE];
public:
safearay()
{
register int i;
for(i = 0; i < SIZE; i++)
{
arr[i] = i;
}
}
int& operator[](int i)
{
if( i > SIZE )
{
cout << "索引超過最大值" <<endl;
// 返回第一個元素
return arr[0];
}
return arr[i];
}
};
int main()
{
safearay A;
cout << "A[2] 的值爲 : " << A[2] <<endl;
cout << "A[5] 的值爲 : " << A[5]<<endl;
cout << "A[12] 的值爲 : " << A[12]<<endl;
return 0;
}
運行
A[2] 的值爲 : 2
A[5] 的值爲 : 5
A[12] 的值爲 : 索引超過最大值
0
函數調用運算符 () 重載
函數調用運算符 () 可以被重載用於類的對象。當重載 () 時,您不是創造了一種新的調用函數的方式,相反地,這是創建一個可以傳遞任意數目參數的運算符函數。
class Complex{
public:
int Add(int x,int y){
return x + y;
}
int operator()(int x,int y){
return x + y;
}
};
void test01(){
Complex complex;
cout << complex.Add(10,20) << endl;
//對象當做函數來調用
cout << complex(10, 20) << endl;
}