【項目1 - 教師兼幹部類】
分别定義teacher(教師)類和cadre(幹部)類,采用多重繼承方式由這兩個類派生出新類teacher_cadre(教師兼幹部)。要求:
(1)在兩個基類中都包含姓名、年齡、性别、位址、電話等資料成員。
(2)在teacher類中還包含資料成員title(職稱),在cadre類中還包含資料成員post(職務),在teacher_cadre類中還包含資料成員wages(工資)。
(3)對兩個基類中的姓名、年齡、性别、位址、電話等資料成員用相同的名字,在引用這些資料成員時,指定作用域。
(4)在類體中聲明成員函數,在類外定義成員函數。
(5)在派生類teacher_cadre的成員函數show中調用teacher類中的display函數,輸出姓名、年齡、性别、職稱、位址、電話,然後再用cout語句輸出職務與工資。
【項目2 - 機車繼承自行車和機動車】
在下面一段類的定義中,自行車類的虛基類為車輛類,機動車類的虛基類也為車輛類,機車類的基類為自行車類和機動車類,類之間均為公有繼承,如圖所示。
(1)根據上面各類間關系的描述,補全下面程式段中空缺的代碼;
(2)實作程式中聲明的成員函數,注意相應操作中的動作發生的條件不能滿足時應給出提示。
(4)在報告中,請用自己的話寫清楚使用虛基類解決什麼問題?
參考運作結果如下:
【項目3】日期時間類
定義一個日期類date,資料成員包括年、月、日,setdate(int y,int m,int d)和printdate()函數分别用于設定日期和顯示日期;再定義一個時間類time,資料成員包括時、分、秒,settime(int h,int m,int s)和printtime()函數分别用于設定時間和顯示時間,在此基礎上再定義一個日期時間類timedate,充分利用已有的兩個類中提供的方法,實作日期和時間的設定和顯示。請實作類timedate,下面是用于測試的主函數及參考運作結果。
【項目4 - 點、圓的關系】
(1)先建立一個point(點)類,包含資料成員x,y(坐标點);
(2)以point為基類,派生出一個circle(圓)類,增加資料成員(半徑),基類的成員表示圓心;
(3)編寫上述兩類中的構造、析構函數及必要運算符重載函數(本項目主要是輸入輸出);
(4)定義友元函數int locate,判斷點p與圓的位置關系(傳回值<0圓内,==0圓上,>0 圓外);
(5)在圓類上重載關系運算符(6種),使之能夠按圓的面積比較兩個圓的大小。自編main函數完成測試。
(6)與圓心相連的直線:給定一點p,其與圓心相連成的直線,會和圓有兩個交點,如圖。在上面定義的point(點)類和circle(圓)類基礎上,設計一種方案,輸出這兩點的坐标。
提示: