您可以重定義或過載大部分 c++ 內建的運算子。這樣,您就能使用自定義型別的運算子。
過載的運算子是帶有特殊名稱的函式,函式名是由關鍵字 operator 和其後要過載的運算子符號構成的。與其他函式一樣,過載運算子有乙個返回型別和乙個引數列表。
box operator+(const box&);宣告加法運算子用於把兩個 box 物件相加,返回最終的 box 物件。大多數的過載運算子可被定義為普通的非成員函式或者被定義為類成員函式。如果我們定義上面的函式為類的非成員函式,那麼我們需要為每次操作傳遞兩個引數,如下所示:
box operator+(const box&, const box&);下面的例項使用成員函式演示了運算子過載的概念。在這裡,物件作為引數進行傳遞,物件的屬性使用this運算子進行訪問,如下所示:
#include using namespace std;下面是可過載的運算子列表:class box
void setlength( double len )
void setbreadth( double bre )
void setheight( double hei )
// 過載 + 運算子,用於把兩個 box 物件相加
box operator+(const box& b)
private:
double length; // 長度
double breadth; // 寬度
double height; // 高度
};// 程式的主函式
int main( )
{ box box1; // 宣告 box1,型別為 box
box box2; // 宣告 box2,型別為 box
box box3; // 宣告 box3,型別為 box
double volume = 0.0; // 把體積儲存在該變數中
// box1 詳述
box1.setlength(6.0);
box1.setbreadth(7.0);
box1.setheight(5.0);
// box2 詳述
box2.setlength(12.0);
box2.setbreadth(13.0);
box2.setheight(10.0);
// box1 的體積
volume = box1.getvolume();
cout << "volume of box1 : " << volume 《當上面的**被編譯和執行時,它會產生下列結果:
volume of box1 : 210
volume of box2 : 1560
volume of box3 : 5400
雙目算術運算子
+ (加),-(減),*(乘),/(除),% (取模)
關係運算子
==(等於),!= (不等於),< (小於),> (大於》,<=(小於等於),>=(大於等於)
邏輯運算子
||(邏輯或),&&(邏輯與),!(邏輯非)
單目運算子
+ (正),-(負),*(指標),&(取位址)
自增自減運算子
++(自增),--(自減)
位運算子
| (按位或),& (按位與),~(按位取反),^(按位異或),,<< (左移),>>(右移)
賦值運算子
=, +=, -=, *=, /= , % = , &=, |=, ^=, <<=, >>=
空間申請與釋放
new, delete, new[ ] , delete
其他運算子
()(函式呼叫),->(成員訪問),,(逗號),(下標)
下面是不可過載的運算子列表:
C 運算子過載 operator
參考 c primer plus p381,運算子過載 定義乙個表示時間的 time 類,有成員變數 hours 和 minutes 如果需要將 time 的兩個例項表示的時間 如2小時40分鐘 加上 1 小時30分鐘 相加,可以定義成員函式 sum 還可以過載 加法運算子 標頭檔案 mytime....
operator運算子過載
運算子過載 一 作為類成員函式的過載 為了能進行類物件和乙個整型值的加法運算,需要寫乙個類的成員函式來過載雙目加法 運算子。該函式在類中的宣告如下 date operator int const 函式的宣告指出,返回值是乙個date類物件,函式名是運算子 只有乙個整型引數,而且函式是常量型的。當編譯...
運算子的過載 operator
一 運算子的過載 運算子過載,就是對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別 在複雜資料型別中,編譯器不能識別運算子,如c 中,物件 物件,編譯器無法知道怎麼運算,所以就需要編寫函式,實現相應功能。不能過載的 運算子五個 szieof 二 自增運算子過載的實現 a a 1.類...