天天看點

2013級C++第11周(春)項目——通過繼承擁有基類的資源

(注:本課資料由第9周直接到第11周,因為第10周是我校春假期,全校休課。春假,實際是五一、清明、端午打包一起休息,這親戚的做法對按周安排活動的學校更好一些。)

第一部分 程式閱讀 

程式閱讀1: 

(1)先閱讀程式,寫出你預想的運作結果:

___________________________________

(2)再記錄運作結果:

(3)如果兩者有差異,再讀程式給出解釋:_____________________________________________。

(4)觀察基類a中成員的通路權限制以及派生類b中對這些成員的通路方法。

程式閱讀2:

(1)先分析程式的執行結果,在上機時運作程式進行對照,再通過單步執行跟蹤程式的運作,達到了解基類、派生類中構造函數、析構函數執行過程的目的。

(2)将whole類的構造函數(見注釋//問題2)改為下面形式,請解釋出現的警告資訊。

第2部分 項目

【項目1 - 存儲班長資訊的學生類】

(1)上面是聲明好的類及測試函數,請完成類中成員函數的定義,使運作結果如圖所示。

2013級C++第11周(春)項目——通過繼承擁有基類的資源

(2)将stu類的資料成員的通路權限改為private,你的程式是否能完成要求的功能?如果不行,請修改程式。請不要修改給出的代碼,隻能修改自己寫的代碼。 

【項目2 - 職員有薪水了】定義一個名為cperson的類,有以下私有成員:姓名、身份證号、性别和年齡,成員函數:構造函數、析構函數、輸出資訊的函數。并在此基礎上派生出cemployee類,派生類cemployee增加了兩個新的資料成員,分别用于表示部門和薪水。要求派生類cemployee的構造函數顯示調用基類cperson的構造函數,并為派生類cemployee定義析構函數,定義輸出資訊的函數。

下面的運作結果供參考:

2013級C++第11周(春)項目——通過繼承擁有基類的資源

【項目2拓展(選做)】字元串除了用c++擴充的string類型外,按c語言的傳統,還用char *表示。請将類聲明中的string全部改為char *後,重新寫一遍程式(此時的差別是,類中有指針成員,構造和析構函數需要考慮深複制的問題了。)

【項目3 - 點類派生直線類】定義點類point,并以點類為基類,派生出直線類line,從基類中繼承的點的資訊表示直線的中點。請閱讀下面的代碼,并将缺少的部分寫出來。

程式運作參考圖:

2013級C++第11周(春)項目——通過繼承擁有基類的資源

【項目4 - 類族的設計】按以下的提示,由基類的設計和測試開始,逐漸地完成各個類的設計,求出圓格柱體的表面積、體積并輸出并且完成要求的計算任務:

    (1)先建立一個point(點)類,包含資料成員x,y(坐标點),實作需要的成員函數,并設計main函數完成測試;

    (2)以point為基類,派生出一個circle(圓)類,增加資料成員r(半徑),以及求面積的成員函數area,實作其他需要的成員函數,設計main函數完成測試;

    (3)再以circle類為直接基類,派生出一個cylinder(圓柱體)類,再增加資料成員h(高),,以及求圓柱表面積的成員函數area和求圓柱體積的成員函數volume,實作需要的成員函數,并設計main函數完成測試。

     要求編寫程式,設計出各類中“需要的成員函數”,包括構造函數、析構函數、修改資料成員和擷取資料成員的公共接口、用于輸出的重載運算符“<<”函數等。

   (提示:此任務可以分為三個子任務分成若幹步驟進行。先聲明基類,再聲明派生類,逐級進行,分步調試。——這種方法适用于做任何的項目)

繼續閱讀