天天看點

2015級C++第13周實踐項目 多态性和實作

  (1)實作分數類中的運算符重載,在分數類中可以完成分數的加減乘除(運算後再化簡)、比較(6種關系)的運算。

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

  (3)定義分數的一目運算+和-,分别代表分數取正和求反,将“按位取反運算符”~重載為分數的求倒數運算。

  (4)定義分數類中<<和>>運算符重載,實作分數的輸入輸出,改造原程式中對運算結果顯示方式,使程式讀起來更自然。

  

  下面是給出的基類animal聲明和main()函數。

  程式的運作結果将是:

2015級C++第13周實踐項目 多态性和實作

  1、根據給出的main()函數和運作結果的提示,設計出相關的各個類,注意觀察運作結果,提取出每個類中需要的資料成員,并比對上需要的成員函數。

  2、顯然,animal設計為抽象類更合适,animal不需要能夠執行個體化,是專門作基類使用的。改造程式,使animal設計為抽象類,這時main()函數中p = new animal();将出錯,将此行删除。

  3、每一個animal的派生類都有一個“名字”資料成員,這個成員設定為基類animal的成員更好。改造上面的程式,将“名字”成員作為抽象類animal資料成員被各派生類使用。

  寫一個程式,定義抽象基類shape,由它派生出3個派生類,circle(圓形)、rectangle(矩形)、triangle(三角形)。用如下的main()函數,求出定義的幾個幾何體的面積和。

  設計一個抽象類csolid,含有用于求表面積及體積的兩個純虛函數。設計派生類ccube、cball、ccylinder,分别表示正方體、球體及圓柱體。在main()函數中,定義csolid *p;(p是指向基類的指針,且這個基類是個抽象類)。要求利用這個p指針,能夠求出正方體、球體及圓柱體對象的表面積及體積。

繼續閱讀