運算子過載學習筆記

2021-08-01 04:01:32 字數 2020 閱讀 3224

定義乙個複數類complex,使之能用於複數的加法運算。編寫程式,求兩複試之和。

#ifndef complex_h_

#define complex_h_

class complex

;#endif

#include

#include

"complex.h"

complex::complex(){}

complex::complex(float r,float i):re(r),im(i){}

complex complex::sum(const complex z)const

void complex::show()const

//complie complex.cpp and usecomplex.cpp together

#include

#include "complex.h"

int main()

只要將sum()的名稱改為operator+()即可

呼叫時可以像呼叫sum()那樣:

total=z1.sum(z2);

也可以使用運算子表示法:

total=z1+z2;

此時運算子函式為類的成員函式

友元函式知識點複習:

1. 原型在類宣告中宣告,但它不是成員函式,不能用成員運算子呼叫

2. 雖然不是成員函式,但與成員函式訪問許可權相同

宣告friend complex operator+(float r,float i);

定義(不用寫friend)complex operator+(float r,float i){}

修改程式如下:

complex operator+(const complex &z01,const complex &z02)

過載為普通函式,就無法訪問private資料成員。

那麼就在public中增加set_re(),set_im(),get_re()和get_im()函式。

**如下:

#ifndef complex_h_

#define complex_h_

class complex

;complex operator+(const complex &z01,const complex &z02);//宣告返回component類的物件的普通函式

#endif

#include

#include "complex.h"

complex::complex(){}

complex::complex(float r,float i):re(r),im(i){}

void complex::set_re(float r)

void complex::set_im(float i)

float complex::get_re()const

float complex::get_im()const

void complex::show()const

complex operator+(const complex &z01,const complex &z02)

//complie complex.cpp and usecomplex.cpp together

#include

#include "complex.h"

int main()

運算子過載筆記

建立臨時物件 將自加後的物件賦給另乙個物件,我們需要建立乙個臨時物件,然後返回該物件 include using namespace std class num num int get const void set int x num operator private int n int main ...

運算子過載筆記

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

c 學習筆記 運算子過載

今天在看使用ceres擬合函式 的時候看到了運算子過載,由於c 當時沒學好現在也忘得差不多了,所以打算開始做乙個c 的學習筆記,看到哪寫到哪。今天看到的這段 如下 template bool operator const t const abc,t residual const 操作符過載的格式是 ...