運算子過載可以寫在類的內部,也可以寫成全域性函式形式,其中運算子 () 、[ ] 、->、 =,在過載時必須宣告為類的成員函式;
而運算子 「 . 」、「 .* 」 、「 :: 」、「 ?:」、 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資料連線在一起,難道加號應用於不同的場景,編譯器就會自...