C 中運算子過載

2021-09-27 08:47:17 字數 1420 閱讀 3318

運算子過載可以寫在類的內部,也可以寫成全域性函式形式,其中運算子 ()  、[ ] 、->、 =,在過載時必須宣告為類的成員函式;

而運算子 「 . 」、「 .* 」 、「 :: 」、「 ?:」、 sizeof 不能被過載;

演算法運算子的過載不會改變運算子原有的優先順序。

例子:

#include #include #include using namespace std;

class complex

friend ostream & operator<<(ostream & os, const complex & c);

friend istream & operator>>(istream & is, complex & c);

complex operator+(complex & c)

friend complex operator-(complex &c1, complex &c2); // 返回型別為 complex

void print();

operator double() // 過載強制型別轉換符

complex & operator++(); // ++c 形式

complex operator++(int); // c++ 形式

friend complex & operator--(complex & c); // --c

friend complex operator--(complex & , int);

};complex &complex::operator++()

complex complex::operator++(int)

complex & operator--(complex & c)

complex operator--(complex & c, int)

complex operator-(complex &c1, complex &c2)

void complex::print()

int main()

, c2=;

complex c3, c4;

c3 = c1-c2;

c1.print();

c3.print();

c4 = c1+c2;

cout<<"c4=";

c4.print();

cout

c4++;

cout<<"c4++ = ";

c4.print();

cout<<"--c4 = ";

--c4;

c4.print();

}

C 中運算子過載

運算子過載使得使用者自定義的資料以一種更簡潔的方式工作。比如int x,y 可以為y x y 而 my c1,c2 如果想使得兩個自定義的物件相加,以前只能調 用函式計算它們的和。而現在只要定義了運算子過載就能實現c1 c1 c2.所謂過載,就是重新賦予新的含義。函式過載就是對乙個已有的函式賦予新的...

C 運算子過載 過載特殊運算子

賦值運算子用於同類物件間的相互賦值。賦值運算子只能被過載為類的非靜態成員函式,不能過載為友元函式和普通函式。對於使用者自定義的類而言,如果沒有過載賦值運算子,那麼c 編譯器會為該類提供乙個預設的過載賦值運算子成員函式。預設賦值運算子的工作方式是按位對拷,將等到右邊物件的非靜態成員拷貝給等號左邊的物件...

中雙目運算子 運算子過載

這節講c 中的運算子過載。方法有過載,運算子也有過載,設想一下,我們用加號計算int型別的資料,返回的也是int型別,這很正常,因為在數學中加號就是用來計算數字的。但是當我們用加號計算兩個string型別的資料時,給我們返回的則是兩個string資料連線在一起,難道加號應用於不同的場景,編譯器就會自...