《C上機實驗報告 實驗六》由會員分享,可在線閱讀,更多相關(guān)《C上機實驗報告 實驗六(6頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、C上機實驗報告 實驗六
實驗六 多態(tài)性
1. 實驗?zāi)康?
1.掌握運算符重載的方法
2.學(xué)習(xí)使用虛函數(shù)實現(xiàn)動態(tài)多態(tài)性
2. 實驗要求
1.定義Point類,有坐標_x,_y兩個成員變量;對Point類重載“++”(自增)、“――”(自減)運算符,實現(xiàn)對坐標值的改變。
2.定義一個車(vehiele)基類,有Run、Stop等成員函數(shù),由此派生出自行車(bicycle)類、汽車(motorcar)類,從bicycle和motorcar派生出摩托車(motorcycle)類,它們都有Run、Stop等成員函數(shù)。觀察虛函數(shù)的作用。
3. (選做)對實驗4中的Peop
2、le類重載“==”運算符和“=”運算符,“==”運算符判斷兩個people類對象的id屬性是否相等;“=”運算符實現(xiàn)People類對象的賦值操作。
3. 實驗內(nèi)容及實驗步驟
1.編寫程序定義Point類,在類中定義整型的私有成員變量_x_y,定義成員函數(shù)Point&
operator++();Point operator++(int);以實現(xiàn)對Point類重載“++”(自增)運算符,定義成員函數(shù)Point& operator--();Point operator--(int);以實現(xiàn)對Point類重載“--”(自減)運算符,實現(xiàn)對坐標值的改變。程序名:1ab8_1.cpp。
3、2.編寫程序定義一個車(vehicle)基類,有Run、Stop等成員函數(shù),由此派生出自行車(bicycle)類、汽車(motorcar)類,從bicycle和motorcar派生出摩托車(motorcycle)類,它們都有Run、Stop等成員函數(shù)。在main()函數(shù)中定義vehicle、bicycle、motorcar、motorcycle的對象,調(diào)用其Run()、Stop()函數(shù),觀察其執(zhí)行情況。再分別用vehicle類型的指針來調(diào)用這幾個對象的成員函數(shù),看看能否成功;把Run、Stop定義為虛函數(shù),再試試看。程序名:lab8_2.cpp。
4. 思考題
1. 如何將一個運算
4、符重載為類的成員函數(shù)
函數(shù)類型 operator 運算符(形參表)
{
函數(shù)體;
}
2. 如何將一個運算符重載為類的友元函數(shù)
friend 函數(shù)類型 operator 運算符(形參表)
{
函數(shù)體;
}
3.如何實現(xiàn)運行時刻的多態(tài)
在基類的成員函數(shù)前加上virtual,就可以在它的派生類中聲明相同名字和類型的成員函數(shù),在運行過程中,系統(tǒng)會自動判斷并調(diào)用相應(yīng)類中的成員函數(shù),從而在調(diào)用過程中實現(xiàn)多態(tài)。
源程序 5.
1.
#include
using namespace std;
class Point
5、
{
private:
int _x;
int _y;
public:
構(gòu)函數(shù)
Point(){}
Point(int,int);
~Point(){}
-重載
Point& operator ++();
Point operator ++(int);
Point& operator --();
Point operator --(int);
howPoint();howPoint();howPoint();howPoint();數(shù)測試
6、 /*();
();
();
();
();
();
();
();*/
etName();
person[i].setNumber();
person[i].setSex();
person[i].setId();
date[i].setDate();
spaceA=getchar();
}
howPeople();
date[i].showDate();
}*/
2.
直接使用對象.函數(shù)的形式可以成功調(diào)用函數(shù)
7、:
使用基類指針后出現(xiàn)錯誤,只能調(diào)用基類的成員函數(shù):
將基類的成員函數(shù)設(shè)置成虛函數(shù)之后,成功實現(xiàn)調(diào)取各個派生類的成員函數(shù):
其中在使用Vehicle類型指針指向Motorcycle類型的對象時會出現(xiàn)錯誤:
將Vehicle按照虛基類繼承,問題解決。
3.
6. 心得體會
學(xué)習(xí)了解了多態(tài),通過編寫程序,進行上機練習(xí),學(xué)會了如何利用虛函數(shù)實現(xiàn)程序的多態(tài)性,進行函數(shù)的重載;而且學(xué)會了如何對各類運算符進行重載,使得各類運算符滿足同類之間的運算,使得程序更加高效;還學(xué)會了使用基類指針或引用對基類的派生類中的各類重載函數(shù) 進行調(diào)用,收獲很大。.