第31課 完善的複數類

2021-08-14 14:33:09 字數 2554 閱讀 2832

1.1、

運算:+、-、*、/

1.2、

比較:==、!=

1.3、

賦值:=

1.4、

求模:modulus

2.1、統一複數與實數的運算方式

complex

operator

+ (const

complex&

c);//因為物件的this關鍵字的緣故,省去乙個引數

complex

operator

- (const

complex&

c);

complex

operator

* (const

complex&

c);

complex

operator

/ (const

complex&

c);

complex

&operator

= (const

complex& c);

//賦值

2.2、統一複數與實數的比較方式

bool

operator

== (

const

complex&

c);

bool

operator

!= (

const

complex& c);

見檔案中的**:complex

/****************      成員函式過載操作符     *************/

#include

class complex

int geta()

int getb()

//方式一: 通過全域性普通的函式實現複數相加 ,,為了在外部訪問類中私有成員,用友元宣告。

friend complex add(const complex& p1, const complex& p2);//這個函式是這個類的友元函式

//方式二:通過全域性函式過載「+」操作符實現複數相加,

friend complex operator + (const complex& p1, const complex& p2);   

//方式三:通過成員函式實現 「+」 操作符的過載

complex operator+(const complex& p) //引數少了乙個左運算元!因為普通成員函式有this指標關鍵字。

};//全域性普通函式

complex add(const complex& p1, const complex& p2)

//全域性過載操作符 +   ,,過載的實質就是為了擴充套件函式功能

complex operator + (const complex& p1, const complex& p2)

int main()

/***********    複數類的完善    *********/

#include

#include

class complex ;

//在宣告的類外面定義函式

complex::complex(double a, double b)

double complex::geta()

double complex::getb()

double complex::getmodulus()

complex complex::operator + (const complex& c)

complex complex::operator - (const complex& c)

complex complex::operator * (const complex& c)

complex complex::operator / (const complex& c)

bool complex::operator == (const complex& c)

bool complex::operator != (const complex& c)

complex& complex::operator = (const complex& c)

return *this;   //返回物件的引用。 }

int main()

3.1、c++規定賦值操作符

(=)只能過載為成員函式(而不能是全域性函式)

3.2、操作符過載

改變不了原操作符的

優先順序

3.3、操作符過載

不能改變運算元的個數

3.4、操作符過載

不應改變操作符的

原有語義

4.1、複數的概念可以通過自定義類實現

4.2、複數中的運算操作可以通過操作符過載實現

4.3、賦值操作符只能通過成員函式實現

4.4、操作符過載的本質為

函式定義

C 第31課 完善複數類

本文學習自 狄泰軟體學院 唐佐林老師的 c 課程 實驗1complex.h ifndef complex h define complex h class complex endif complex.cpp include complex.h include math.h 構造函式引數在宣告的地方已...

Python第31課到42課

python第31課到42課 讀檔案f file data.txt data f.read print data f.close 其他用法 data.txt中存的內容是 hi my name is mike helloworld 當執行f file data.txt data f.readlines...

第31課 KMeans 最簡單的聚類演算法

聚類並非一種機器學習專有的模型或演算法,而是一種統計分析技術,在許多領域受到廣泛應用。廣義而言,聚類就是通過對樣本靜態特徵的分析,把相似的物件,分成不同子集 後面我們將聚類分出的子集稱為 簇 被分到同乙個子集中的樣本物件都具有相似的屬性。在機器學習領域,聚類屬於一種無監督式學習演算法。許多聚類演算法...