小甲魚 C 快速入門筆記 27 之運算子過載2

2021-09-13 10:12:45 字數 989 閱讀 1472

重點要掌握的:

1、歐幾里得演算法

2、運算子過載

#include #include #include using namespace std;

class rational

;rational::rational(int num, int denom)

// normalize() 對分數進行簡化操作包括:

// 1.只允許分子為負數,如果分母為負數則把負數挪到分子部分,1/-2 == -1/2

// 2.利用歐幾里得演算法(輾轉求餘原理)將分數進行簡化:2/10=>1/5

void rational::normalize()

// 歐幾里得演算法

int a = abs(numerator);

int b = abs(denominator);

// 求出最大公約數

while (b > 0)

// 分子,分母分別除以最大公約數得到最簡化分數

numerator /= a;

denominator /= a;

}rational rational::operator+(rational rhs)

rational rational::operator-(rational rhs)

rational rational::operator*(rational rhs)

rational rational::operator/(rational rhs)

void rational::print()

int main()

一些小tips:

1、千萬不要僅僅因為「我懂得這麼做」而去過載乙個操作符,應該只有在必要的時候,比如實現一種新的資料型別時,才過載操作符;

2、過載操作符的目的是為了讓**更容易閱讀和理解;

3、注意在過載操作符時,千萬不要讓它們失去原始的意義,你完全過載+然後對它進行減法操作,但這絕不是創意的表現。

小甲魚 C 快速入門筆記 26 之運算子過載2

www.fishc.com 重點要掌握的 1 歐幾里得演算法 2 運算子過載 include include include using namespace std class rational rational rational int num,int denom normalize 對分數進行簡...

小甲魚 C 快速入門筆記 19 之訪問控制

在此前的例子中,我們無論是animal,pig和turtle類的所有成員都是用public 語句宣告。注意 1 一定要記住使用這些訪問級別,即使只有你乙個人再開發某個專案,全部記住各個類的呼叫方法也是一件困難的事情 2 給每個方法和屬性加上protected或private訪問級別,就由編譯器替你記...

小甲魚 C 快速入門筆記 49 之迭代器

引言 上節課我們的例子雖然工作得很好並也使用了乙個標準的容器 向量容器 但它還是有個小問題,就是在遍歷向量裡的各個元素時,我們仍把它視為乙個c 陣列來對待.剛好我們的向量容器允許使用下標操作符來訪問它的各個元素 name x 因為對容器裡的各個元素進行遍歷是一種十分常見的任務,所以應該有一種標準的方...