C++上機(jī)實(shí)驗(yàn)報(bào)告5_第1頁
C++上機(jī)實(shí)驗(yàn)報(bào)告5_第2頁
C++上機(jī)實(shí)驗(yàn)報(bào)告5_第3頁
C++上機(jī)實(shí)驗(yàn)報(bào)告5_第4頁
C++上機(jī)實(shí)驗(yàn)報(bào)告5_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、C+程序?qū)嶒?yàn)報(bào)告實(shí)驗(yàn)五 繼承與派生實(shí)驗(yàn)?zāi)康?. 學(xué)習(xí)定義和使用類的繼承關(guān)系,定義派生類2. 熟悉不同繼承方式下對(duì)基類成員的 訪問控制3. 學(xué)習(xí)利用虛基類解決二義性問題實(shí)驗(yàn)要求1. 定義一個(gè)基類 Animal,有私有整型成員變量age,構(gòu)造其派生類dog,在其成員函數(shù)SetAge(int n )中直接給age賦值,看看會(huì)有什么問題,把a(bǔ)ge改為公有成員變量,還會(huì)有問題嗎?編程嘗試。2. 定義一個(gè)基類BaseClass,有整型變量 Number,構(gòu)造其派生類DerivedClass,觀察構(gòu)造函 數(shù)和析構(gòu)函數(shù)的執(zhí)行情況。3. 定義一個(gè)車( vehicle )基類,具有 Maxspeed、Weight

2、 等成員, Run、Stop 等成員函數(shù), 由此派生出 自行車(bicycle )類、汽車(motorcar )類。自行車(bicycle )類有高度(Height) 等屬性,汽車(motorcar )類有座位數(shù)(SeatNun)等屬性。從 bicycle 和motorcar派生出 摩托車(motorbicycle )類,在繼承過程中,注意把vehicle 設(shè)置為虛基類。如果不把vehicle 設(shè)置為虛基類,會(huì)有什么問題?編程嘗試。實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)步驟1. 編寫程序定義基類 Animal,成員變量age定義為私有的。構(gòu)造派生類dog,在其成員函數(shù) SetAge ( intn )中直接對(duì)age賦值

3、時(shí),會(huì)出現(xiàn)類似以下的錯(cuò)誤提示:errorC2248 :age: cannot access privatemember declaredin class AnimalerrorC2248 :age: cannot access privatemember declaredin class Animal把 age 改為公有成員變量后重新編譯就可以了。程序名:lab7_1.cpp 。錯(cuò)誤代碼:#includeusing namespace std;class Animalprivate:int age;public:Animal();class dog:public Animalpublic:vo

4、id SetAge(int n)age=n;inf main()宀dog onp0ne.setAge(23x ref urn 0 八#inc-udeAios=reamv using namespace ssc-ass Anima-宀pub-pinf agppub-pAnima-()c-ass dog-bub-icAnima-public:void SetAge(int n)age=n;;int mai n()dog one;on e.SetAge(23); return 0;1i -B i (!hi iFSVFI;D rttMl甲 Vt-n 和q TVI.|TAl:i Kir -W i R77

5、:3吋-口事曾二.: Ji匚3 噸 # ii * 1 n-BPLq-IMVCI PbLrvdriU二運(yùn)行結(jié)果:EIni !押 pipllrrhl-Mlnrv釘唾jj U-lbr-klfa2. 編寫程序定義一個(gè)基類BaseClass ,構(gòu)造其派生類 DerivedClass ,在構(gòu)造函數(shù)和析構(gòu)函數(shù)中用cout輸出提示信息,觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行情況。程序名:Iab7_2.cpp 。源代碼:#in clude using n amespace std; class BaseClassprivate:int a;public:BaseClass()cout 基類構(gòu)造函數(shù)調(diào)用 endl;Base

6、Class()cout 基類析構(gòu)函數(shù)調(diào)用 endl;class DerivedClass:public BaseClass private:int b;public:DerivedClass()cout 派生類構(gòu)造函數(shù)調(diào)用 endl; ;DerivedClass()cout 派生類析構(gòu)函數(shù)調(diào)用 9 E 仃川A# N岔左*翕. Jj|lBX 口* 片“牛也.JJFIteferIIni IIFHlcr i”ri I m 虱!hulk *bi |*Mi忙華斬flMlM用Wl-liKf IF-LTl-FPlGIHiG fidl H USM-liifIh-lUMt IIni II |Mfl lrEnt|

7、L-lfemMULikS WM-i;廠 mrw | |. t *m |嘴 l s .3.用debug功能跟蹤程序Iab7_2的執(zhí)行過程,觀察基類和派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的 執(zhí)行情況。DEBUGW祠疋和*if er tiAh- 口刃客 *1) H耳-i: JlhL耳禮丁 誓占無嶼啤宀.ml !dii+:dart b=lbn-lnHKlA|ITlF牡FgllPW 才如fKiwmCIHriwdCl A b ;|*肝申;ItMIT Aummh fLfuEIti罟FiT*1 irruir 1口 qMIff v1 G”!TTS13 V Rll-!: |h0& !3riJM ien-svi血 aMp i

8、h - T| Wp TAi Kr C翕 I口固鐲”二忙zl廠-: jih丄1 % - # as 1 u,EX n奚曲dtijHflr啊旳13“MiLiJMm 也質(zhì)* 負(fù) Hr trXL;FLM4 9MFMIIjRiliiVf! feilMilM k;|mA*LR Jlbn-lnHKlA|nf 主畔缶iifjB 密WKIT耳才耳;1主怖梅MAi帝啊注-S iwmCI4I肝申fl-41 泊 “t 1 Iw. i. iuLTMlh:! 忑r-.JI 可疋懇 Tl-Syl4.編寫程序定義一個(gè)車 (vehicle )基類,由此派生出自行車 (bicycle )類、汽車(motorcar ) 類,注意把v

9、ehicle 派生為虛基類。再從bicycle 和motorcar派生出摩托車 (motorcycle ) 類,在main()函數(shù)中測試這個(gè)類。程序名 :lab7_3.cpp 。編譯成功后,把 vehicle 設(shè)置為非虛基類,再編譯一次,此時(shí)系統(tǒng)報(bào)錯(cuò),無法編譯成功。這是因?yàn)槿舨话?vehicle設(shè)置為虛基類,會(huì)出現(xiàn)二義性錯(cuò)誤,程序不能成功編譯。源代碼:#in clude using n amespace std;class Vehiclepublic:Vehicle();int a;void set()coutVehicle 調(diào)用endl;class Mortorcar:virtual pub

10、lic Vehicle public:Mortorcar();int b;void set()coutMortorcar 調(diào)用 endl;class Bicycle:virtual public Vehiclepublic:Bicycle();int c;void set()coutBicycle 調(diào)用 endl;class Mortorcycle:public Mortorcar,public Bicycle public: Mortorcycle(); int d; void set() coutMortorcycle 調(diào)用 endl;int main()Mortorcycle one; one.a =1;one.b=2; one.set(); return 0; 運(yùn)行結(jié)果:補(bǔ)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論