c 運算子過載

2021-07-31 16:55:50 字數 1984 閱讀 2091

1 過載輸出運算子

通常情況下,輸出運算子的第乙個形參為乙個非常量ostream的引用。第二個形參一般來說為乙個常量的引用。

operator《一般要返回它的ostream形參

ostream &operator

<<(ostream&out,const coordinte& coor)

2 過載輸入運算子

istream &operator

<<(istream&is,const coordinte& coor)

舉例

(雙目運算子)

//當資料成員為公有的情況下

class coordinate

int m_ix;

int m_iy;

};coordinate operator + (coordinate coor1, coordinate coor2)//加號運算子過載

ostream &operator

<<(ostream &out, const coordinate &coor) //《輸出運算子過載

int main()

當資料成員為私有的情況下,可以採用如下兩種方式:

1,友元函式過載

class coordinate

private:

int m_ix;

int m_iy;

};coordinate operator + (coordinate coor1, coordinate coor2)//加號運算子過載

ostream &operator

<<(ostream &out, const coordinate &coor) //《輸出運算子過載

2,類外定義

class coordinate

coordinate operator + (coordinate coor);

private:

int m_ix;

int m_iy;

};coordinate coordinate::operator + (coordinate coor1)//加號運算子過載(注意乙個形參)

ostream &operator

<<(ostream &out, const coordinate &coor) //《輸出運算子過載

int main()

單目運算子

成員函式

public:

coordinate(int x, int y)

coordinate operator + (coordinate coor);

coordinate operator++ ();//前置

coordinate operator++(int);//後置

private:

int m_ix;

int m_iy;

};coordinate coordinate::operator++()

coordinate coordinate::operator++(int)

友元函式

class coordinate

coordinate operator + (coordinate coor);

//coordinate operator++ ();//前置

//coordinate operator++(int);//後置

private:

int m_ix;

int m_iy;

};coordinate operator++(coordinate& coor1)

coordinate operator++(coordinate &coor1, int)

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

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

C 運算子過載賦值運算子

自定義類的賦值運算子過載函式的作用與內建賦值運算子的作用類似,但是要要注意的是,它與拷貝建構函式與析構函式一樣,要注意深拷貝淺拷貝的問題,在沒有深拷貝淺拷貝的情況下,如果沒有指定預設的賦值運算子過載函式,那麼系統將會自動提供乙個賦值運算子過載函式。賦值運算子過載函式的定義與其它運算子過載函式的定義是...

C 運算子過載轉換運算子

為什麼需要轉換運算子?大家知道對於內建型別的資料我們可以通過強制轉換符的使用來轉換資料,例如 int 2.1f 自定義類也是型別,那麼自定義類的物件在很多情況下也需要支援此操作,c 提供了轉換運算子過載函式 它使得自定義類物件的強轉換成為可能。轉換運算子的生命方式比較特別,方法如下 operator...