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