版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、內(nèi)蒙古科技大學(xué)面向?qū)ο蟮某绦蛟O(shè)計(jì)實(shí)驗(yàn)報告課程名稱:面向?qū)ο蟮某绦蛟O(shè)計(jì)姓名:陳偉光實(shí)驗(yàn)名稱:繼承(一)學(xué)號:任課教師:劉月峰專業(yè):軟件工程指導(dǎo)教師:劉月峰班級:15-軟件一班一、實(shí)驗(yàn)?zāi)康?理解繼承的含義以及聲明;2理解共有派生、私有派生和保護(hù)派生的含義以及使用;3理解單派生類中構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。二、實(shí)驗(yàn)環(huán)境編譯器:Visual C+ 6.0.操作系統(tǒng):Windows 7旗艦版三、實(shí)驗(yàn)內(nèi)容2.1練習(xí)(一):1理解下面的程序,并在VC+6.0下運(yùn)行查看結(jié)果,回答程序后面的問題。#include iostream.hclass CBasepublic:CBase(int a) :a(a)p
2、rotected:void print() couta=aendl;private:int a;class CDerive : public CBasepublic:void print() CBase:print(); coutb=bendl;private:int b;void main()CDerive d;d.print();CBase b;b.print();問題一:以上程序有兩大錯誤,試指出來,并改正之?2理解下面的程序,并在VC+6.0下運(yùn)行查看結(jié)果,回答程序后面的問題。#include iostream.hclass CBasepublic:CBase(int a) :a(a)
3、 coutbase structureendl;CBase() coutbase destructureendl;void print() couta=aendl;protected:int a;class CDerive : public CBasepublic:CDerive(int a, int b,int c) :CBase(a),b(b),c(c) coutderive structureendl;CDerive() coutderive destructureendl;void print() CBase:print(); coutb.a=b.aendl; coutc=cendl;
4、private:CBase b;int c;void main()CDerive d(1,2,3); -d.print();問題一:以上程序的輸出結(jié)果是什么,說明為什么?問題二:處語句執(zhí)行完后,d.b.a的值為多少?2.2練習(xí)(二):1定義點(diǎn)CPoint類作為基類,在此基礎(chǔ)上派生出直線CLine類和圓CCircle類,并要求基類和各派生類具有以下特點(diǎn):aCLine類含有計(jì)算直線長度和斜率的成員函數(shù);bCCircle類含有計(jì)算圓面積的成員函數(shù)。四、實(shí)驗(yàn)過程練習(xí)1實(shí)驗(yàn)題目源代碼如下:直接編譯結(jié)果如下:查看錯因,首先前兩句話寫明,在創(chuàng)建CBase和CDerive對象時候,沒有傳遞參數(shù),實(shí)際代碼中CD
5、erive根本沒有正確的構(gòu)造函數(shù),代碼區(qū)中加入一段帶有初始化列表的構(gòu)造函數(shù)第三句話指明基類對象b直接調(diào)用CBase類保護(hù)成員函數(shù),屬于類外調(diào)用,權(quán)限錯誤,此處可以將print的權(quán)限改為public修改后的代碼如下:然后嘗試編譯運(yùn)行:運(yùn)行成功,符合題意練習(xí)2實(shí)驗(yàn)題目提供源代碼如下:嘗試編譯:錯誤集中在基類成員數(shù)據(jù)a上,分析代碼,CDerive類對象d創(chuàng)建時候一共有三個參數(shù),1傳遞至派生類,再調(diào)用基類構(gòu)造函數(shù),3直接傳遞給派生類構(gòu)造函數(shù), 2傳遞給了派生類的中內(nèi)嵌的基類成員對象,然而在公有繼承下,派生類對象只能訪問基類的公有數(shù)據(jù),所以此處將a的權(quán)限改為public,修改之后的代碼如下:嘗試編譯運(yùn)行
6、:結(jié)果和代碼本意相同,修改成功練習(xí)3根據(jù)題意,設(shè)計(jì)代碼如下:面積計(jì)算以及斜率計(jì)算分別寫在了CLine類和CCircle類的構(gòu)造函數(shù)中,在創(chuàng)建對象的時候輸入x2,y2 r即可算出距離和面積試運(yùn)行結(jié)果如下:運(yùn)行結(jié)果正確五、實(shí)驗(yàn)總結(jié)實(shí)驗(yàn)源代碼:練習(xí)(一)#include iostream.hclass CBasepublic:CBase(int a):a(a) / protected:void print() /錯誤1.CBase類對象類外無法直接調(diào)用此主函數(shù),應(yīng)該改為public型couta=aendl;private:int a;class CDerive : public CBasepubli
7、c:CDerive(int a,int b):CBase(a),b(b) /錯誤2.構(gòu)造函數(shù)錯誤,初始化列表和參數(shù)錯誤void print()CBase:print(); /保護(hù)繼承下,派生類中可以訪問基類的公有和保護(hù)數(shù)據(jù)coutb=bendl;private:int b;void main()CDerive d(0,0); /因?yàn)樵}構(gòu)造函數(shù)中有形參,所以創(chuàng)建要加上參數(shù)d.print();CBase b(0);b.print();/*#include iostream.hclass CBasepublic:CBase(int a):a(a)protected:void print()cout
8、a=aendl;private:int a;class CDerive : public CBasepublic:void print()CBase:print();coutb=bendl;private:int b;void main()CDerive d;d.print();CBase b;b.print();*/練習(xí)(二)#include iostream.hclass CBasepublic:CBase(int a):a(a)coutbase structureendl;CBase()coutbase destructureendl;void print()couta=aendl;pu
9、blic:int a;class CDerive : public CBasepublic:CDerive(int a, int b,int c):CBase(a),b(b),c(c)coutderive structureendl;CDerive()coutderive destructureendl;void print()CBase:print();coutb.a=b.aendl; /公有繼承下派生類子對象只能訪問基類的公有數(shù)據(jù);coutc=cendl;private:CBase b;int c;void main()CDerive d(1,2,3);/ -d.print();/*1.沒
10、有任何輸出結(jié)果,因?yàn)槌绦驘o法通過編譯2.d.b.a的值為2 ,因?yàn)闃?gòu)造函數(shù)實(shí)參的第二個元素2,傳遞給CDerive類的子對象b,b.a被初始化為2*/*#include iostream.hclass CBasepublic:CBase(int a):a(a)coutbase structureendl;CBase()coutbase destructureendl;void print()couta=aendl;protected:int a;class CDerive : public CBasepublic:CDerive(int a, int b,int c):CBase(a),b(b
11、),c(c)coutderive structureendl;CDerive()coutderive destructureendl;void print()CBase:print();coutb.a=b.aendl;coutc=cendl;private:CBase b;int c;void main()CDerive d(1,2,3); -d.print();*/練習(xí)(三)#include #include class CPointprivate:float x,y;public:CPoint(float x1,float y1):x(x1),y(y1)cout-CPoint基類構(gòu)造函數(shù)已
12、調(diào)用-endl;void display()coutx= CPoint:x y= CPoint:yendl;class CLine:public CPointprivate:double k;double l;public:CLine(float x1,float y1):CPoint(x1,y1)cout-CLine派生類構(gòu)造函數(shù)已調(diào)用-endl;float x2,y2;coutPlease input x2,y2:x2y2;l=sqrt(x1-x2)*(x1-x2)+(y2-y1)*(y2-y1);coutl:lendl;if(y2-y1!=0)k=(y2-y1)/(x2-x1);coutk= kendl;elsecout分母為0,k不存在endl; ;class CCircle:public CPointprivate:double r;public:CCircle(float x1,float y1):CPoint(x1,y1)cout-CCircle派
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 給供煤炭合同范本
- 給女友賣命協(xié)議書
- 續(xù)聘會議合同范本
- 代購合同協(xié)議書
- 修改工程協(xié)議書
- 電子廠里的協(xié)議書
- 借殼收購協(xié)議書
- 差價返利合同范本
- 繪畫裝裱合同范本
- 全面金融協(xié)議書
- 醫(yī)療器械質(zhì)量管理自查報告
- 壓瘡護(hù)理健康宣教
- 中醫(yī)科宣教課件
- 2025湖南懷化中方縣高新產(chǎn)業(yè)投資有限公司招聘10人備考題庫有完整答案詳解
- 公共區(qū)域裝修工程技術(shù)標(biāo)書文檔樣本
- 華為干部管理體系
- 2024年基本級執(zhí)法資格考試題庫及解析(200題)
- 2026中國二手醫(yī)療設(shè)備進(jìn)出口貿(mào)易現(xiàn)狀與未來發(fā)展預(yù)測報告
- 中國國際大學(xué)生創(chuàng)新大賽獲獎項(xiàng)目商業(yè)計(jì)劃書
- 身邊的工匠精神的事例
- 煤礦安全生產(chǎn)管理制度的內(nèi)容
評論
0/150
提交評論