C++繼承與派生實驗報告

C++繼承與派生實驗報告

ID:37920830

大?。?78.00 KB

頁數(shù):7頁

時間:2019-06-02

C++繼承與派生實驗報告_第1頁
C++繼承與派生實驗報告_第2頁
C++繼承與派生實驗報告_第3頁
C++繼承與派生實驗報告_第4頁
C++繼承與派生實驗報告_第5頁
資源描述:

《C++繼承與派生實驗報告》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、應(yīng)用數(shù)學(xué)學(xué)院信息與計算科學(xué)(信息計算)專業(yè)1班、學(xué)號3111008106姓名吳偉栓教師評定_________________實驗題目繼承與派生一、實驗?zāi)康呐c任務(wù)實驗?zāi)康模海?)學(xué)習(xí)聲明和使用類的繼承關(guān)系,聲明派生類。(2)熟悉不同繼承方式下對基類成員的訪問控制。(3)學(xué)習(xí)利用虛基類解決二義性問題。實驗任務(wù):(1)聲明一個基類Animal,有私有整型成員變量age,構(gòu)造其派生類dog,在其成員函數(shù)SetAge(intn)中直接給age賦值,看看會有什么問題,把a(bǔ)ge改為公有成員變量,還會有問題嗎?編程試試

2、看。(2)聲明一個基類BaseClass,有整形成員變量Number,構(gòu)造其派生類DerivedClass,觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行情況。(3)聲明一個車(vehicle)基類,具有MaxSpeed,Weight等成員變量,Run,Stop等成員函數(shù),由此派生出自行車(bicycle)類,汽車(motorcar)類。自行車(bicycle)類有高度(Height)等屬性,汽車(motorcar)類有座位數(shù)(SeatNum)等屬性。從bicycle和motorcar派生出摩托車(motocycle)類

3、,在繼承過程中,注意把vehicle設(shè)置為虛基類。如果不把vehicle設(shè)置為虛基類,會有什么問題?編程試試看。(4)(選做)從實驗六中的people(人員)類派生出student(學(xué)生)類,添加屬性:班號charclassNo[7];從people類派生出teacher(教師)類,添加屬性:職務(wù)charprincipalship[11]、部門chardepartment[21]。從student類中派生出graduate(研究生)類,添加屬性:專業(yè)charsubject[21]、導(dǎo)師teacherra

4、dviser;從graduate類和teacher類派生出TA(助教生)類,注意虛基類的使用。重載相應(yīng)的成員函數(shù),測試這些類。二、實驗步驟(1)編寫程序聲明基類Animal,成員變量age聲明為私有的。構(gòu)造派生類dog,在其成員函數(shù)SetAge(intn)中直接對age賦值時,會出現(xiàn)類似以下的錯誤提示:errorc2248:’age’:cannotaccessprivatememberdeclaredinclass‘Animal’把age改為公有成員變量后重新編譯就可以了。(2)編寫程序聲明一個基類Ba

5、seClass,構(gòu)造其派生類DerivedClass,在構(gòu)造函數(shù)和析構(gòu)函數(shù)中用cout輸出提示信息,觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行情況。(3)用Debug功能跟蹤程序(2)的執(zhí)行過程,觀察基類和派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行情況。(4)編寫程序聲明一個車(vehicle)基類,由此派生出自行車(bicycle)類、汽車(motorcar)類,注意把vehicle派生為虛基類。再從bicycle和mororcar派生出摩托車(motorcycle)類,在main()函數(shù)中測試這個類。(5)編譯成功后,把v

6、ehicle設(shè)置為非虛基類,再編譯一次,此時系統(tǒng)報錯,無法編譯成功。這是因為若不把vehicle設(shè)置為虛基類,會出現(xiàn)二義性錯誤,程序不能成功編譯。一、實驗方案(1)(2)(3)(4)一、實驗結(jié)果實驗一:編譯不通過實驗二程序運(yùn)行結(jié)果如下:實驗二在lab7_2中,創(chuàng)建了一個派生類DerivedClass的對象a,先調(diào)用基類BaseClass的構(gòu)造函數(shù),再調(diào)用派生類DerivedClass的構(gòu)造函數(shù),當(dāng)對象a消失時,先調(diào)用派生類DerivedClass的析構(gòu)函數(shù),再調(diào)用基類BaseClass的析構(gòu)函數(shù)。由此可

7、見,構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序是相反的。實驗三此程序的結(jié)果如下:實驗三不把vehicle設(shè)為虛基類,編譯不通過一、結(jié)論實驗一從運(yùn)行結(jié)果看,本程序是錯誤的,原因在于dog類的成員函數(shù)無法訪問到Animal類的私有成員。將age改為公有成員后,得到如下正確程序:程序運(yùn)行結(jié)果如下:實驗二在此程序中,創(chuàng)建了一個派生類的對象,先調(diào)用基類的構(gòu)造函數(shù),再調(diào)用派生類的構(gòu)造函數(shù),當(dāng)對象消失時,先調(diào)用派生類的析構(gòu)函數(shù),再調(diào)用基類的析構(gòu)函數(shù)。由此可見,構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序是相反的。實驗二在lab7_2中,創(chuàng)建了一個

8、派生類DerivedClass的對象a,先調(diào)用基類BaseClass的構(gòu)造函數(shù),再調(diào)用派生類DerivedClass的構(gòu)造函數(shù),當(dāng)對象a消失時,先調(diào)用派生類DerivedClass的析構(gòu)函數(shù),再調(diào)用基類BaseClass的析構(gòu)函數(shù)。由此可見,構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序是相反的。實驗三如果不把vehicle設(shè)為虛基類,系統(tǒng)編譯則不通過。原因在于類bicycle、motorcar、motorcycle中的Run、Stop成員函數(shù)是從基類veh

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。