重點要掌握的:
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 因為對容器裡的各個元素進行遍歷是一種十分常見的任務,所以應該有一種標準的方...