運算子過載筆記

2021-06-07 14:28:40 字數 1647 閱讀 5149

建立臨時物件

將自加後的物件賦給另乙個物件,我們需要建立乙個臨時物件,然後返回該物件

#include using namespace std;

class num

~num(){}

int get()const

void set(int x)

num operator++()

private:

int n;

};int main()

建立無名臨時物件

要想實現以上功能也可以不用建立乙個臨時物件,假如我們有乙個帶引數的建構函式,那麼我們只要這個建構函式返回即可。

#include using namespace std;

class num

num(int i)

~num(){}

int get()const

void set(int x)

num operator++()

private:

int n;

};int main()

取消建立臨時物件

建立乙個物件將會呼叫建構函式,來為該物件開闢記憶體空間,而銷毀該物件則要呼叫析構函式來釋放記憶體,每建立一次物件,系統都要犧牲一定的速度和記憶體空間,this指標就是當前物件的標籤,而當前物件的成員變數也會被編譯器自動貼上this標籤以證明是當前物件的,那麼只要將當前物件的成員變數自己,然後返回this指標指向的當前物件即可。

#include using namespace std;

class num

num(int i)

num(const num &s) //為了避免按值返回建立乙個*this的臨時副本,我們最好把operator的返回值定義為按別名返回,

~num(){} //並且我們不可能只想能夠++++i這樣的操作,,既將i進行前置自加後再進行自加,因此我們有必要將它的返回值也

int get()const //定義為常量如:

void set(int x)

num operator++() //const num &operator(){}

private:

int n;

};int main()

以上過載的是前置自加運算子,下面過載一下後置運算子。

#include using namespace std;

class num

num(int i)

num(const num &s)

~num(){}

int get()const

void set(int x)

const num &operator++() //前置自加

const num operator++(int o) //後置自加 int o引數沒有任何實際意義,只是區分與前面的前置自加重載的區分。

private:

int n;

};int main()

運算子過載筆記

1.不能用友元過載的運算子 原因有2種說法 1 operator 時可以將友元函式宣告和類分開放,那麼在這個operator 函式之前的 遇到 號就是預設的 操作符,在operator 之後的 用的就是這個過載的operator 造成了混亂.2 作為成員函式過載時,呼叫物件就是第乙個引數,比如 作為...

運算子過載學習筆記

定義乙個複數類complex,使之能用於複數的加法運算。編寫程式,求兩複試之和。ifndef complex h define complex h class complex endif include include complex.h complex complex complex comple...

c 運算子過載筆記

1.運算子過載的六個注意事項 1 過載運算子函式的引數個數,應該與參與這個運算子的運算物件數量一樣多,但是如果是成員函式,則引數數量要少乙個,因為第乙個引數是this。例如 includeusing namespace std class test int operator const test v...