天天看點

C++程式設計-第8周 運算符的重載

本周目标是:(1)學會定義類中雙目和單目運算符的重載函數;(2)學會使用類的成員函數和友元函數實作運算符的重載

【項目1-實作複數類中的運算符重載】定義一個複數類重載運算符+、-、*、/,使之能用于複數的加減乘除。

(1)任務一:請用類的成員函數完成運算符的重載;

(2)任務二:請用類的友元函數,而不是成員函數,完成上面提及的運算符的重載;

(3)任務三:在方案二的基礎上,擴充+、-、*、/運算符的功能,使之能與double型資料進行運算。設complex c; double d; c?d和d?c的結果為“将d視為實部為d的複數同c運算”的結果(其中?為+、-、*、/之一)。另外,再定義一目運算符 -,-c相當于0-c。

【項目2-time類中的運算符重載】實作time類中的運算符重載

【項目3-分數類中的運算符重載】實作分數類中的運算符重載,在分數類中可以完成分數的加減乘除(運算後再化簡)、求反、比較(6種關系)的運算。可以從第5周項目2的代碼開始工作。

【項目4-分數類和整型數的四則運算】在項目3的基礎上拓展。分數類中的對象可以和整型數進行四則運算,且運算符合交換律。例如:cfraction a(1,3),b; int i=2; 可以完成b=a+i;。同樣,可以完成i+a, 45+a, a*27, 5/a等各種運算。

【項目5-擴充string類】在p324基礎上,在string類中增加一個資料成員len表示字元串中字任個數,然後構造string類的相關運算。這些運算可以包括:s1 + s2用于兩個字元串的連接配接;s1 - s2用于将s1的尾部空格和s2的前導空格去除後的連接配接;s1*n的結果為将s1中的字元重複n次;s1/s2表示在s1中删除所有與s2相同的子串。這些運算本身并無統一的規範,多想一些字元串上的操作,利用運算符的重載實作之。

繼續閱讀