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

下載本文檔

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

文檔簡(jiǎn)介

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

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

3、時(shí),會(huì)出現(xiàn)類(lèi)似以下的錯(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. 編寫(xiě)程序定義一個(gè)基類(lèi)BaseClass ,構(gòu)造其派生類(lèi) 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 基類(lèi)構(gòu)造函數(shù)調(diào)用 endl;Base

6、Class()cout 基類(lèi)析構(gòu)函數(shù)調(diào)用 endl;class DerivedClass:public BaseClass private:int b;public:DerivedClass()cout 派生類(lèi)構(gòu)造函數(shù)調(diào)用 endl; ;DerivedClass()cout 派生類(lèi)析構(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í)行過(guò)程,觀察基類(lèi)和派生類(lèi)的構(gòu)造函數(shù)和析構(gòu)函數(shù)的 執(zhí)行情況。DEBUGW祠疋和*if er tiAh- 口刃客 *1) H耳-i: JlhL耳禮丁 誓占無(wú)嶼啤宀.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.編寫(xiě)程序定義一個(gè)車(chē) (vehicle )基類(lèi),由此派生出自行車(chē) (bicycle )類(lèi)、汽車(chē)(motorcar ) 類(lèi),注意把v

9、ehicle 派生為虛基類(lèi)。再?gòu)腷icycle 和motorcar派生出摩托車(chē) (motorcycle ) 類(lèi),在main()函數(shù)中測(cè)試這個(gè)類(lèi)。程序名 :lab7_3.cpp 。編譯成功后,把 vehicle 設(shè)置為非虛基類(lèi),再編譯一次,此時(shí)系統(tǒng)報(bào)錯(cuò),無(wú)法編譯成功。這是因?yàn)槿舨话?vehicle設(shè)置為虛基類(lèi),會(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論