實(shí)驗(yàn)二 繼承與派生_第1頁
實(shí)驗(yàn)二 繼承與派生_第2頁
實(shí)驗(yàn)二 繼承與派生_第3頁
實(shí)驗(yàn)二 繼承與派生_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、-. z.實(shí)驗(yàn)二 繼承和派生的根本概念一、 實(shí)驗(yàn)?zāi)康睦^承與派生是面向?qū)ο蟮奶匦?,是面向?qū)ο蟪绦蛟O(shè)計(jì)模擬客觀世界的手段之一,本實(shí)驗(yàn)的容包括介紹基類與派生關(guān)系,通過實(shí)驗(yàn)要求掌握以下容。1 掌握類繼承與派生關(guān)系以及實(shí)現(xiàn)方法,理解類的層次構(gòu)造。2 掌握派生類構(gòu)造函數(shù)初始化基類成員和對象成員的方法。3 掌握賦值兼容原則,掌握派生類的復(fù)制構(gòu)造函數(shù)和賦值運(yùn)算符的定義。 二、 實(shí)驗(yàn)容1例:定義一個繼承與派生關(guān)系的類體系,在派生類中訪問基類成員。先定義一個點(diǎn)類,包含*,y坐標(biāo)數(shù)據(jù)成員,顯示函數(shù)和計(jì)算面積的函數(shù)成員;以點(diǎn)為基類派生一個圓類,增加表示半徑的數(shù)據(jù)成員,重載顯示和計(jì)算面積的函數(shù);定義一個線段類,以兩個點(diǎn)

2、類對象作數(shù)據(jù)成員,定義顯示、求面積及長度函數(shù),線段類采用聚合方式,因?yàn)橛袃蓚€端點(diǎn),不能用派生方式。編程測試所定義的類體系?!境绦颉?cl3=cl1;coutcl3圓面積: cl3.Area() endl;cl3.Show();cout線面積: ln1. Area()t線長度: ln1. GetLength() endl;ln1.Show();ln2.Show();return 0; 【注意】在Point 類中,將Line 類定義為友元,便于在Line 類中訪問;Point 類的*和y 定義為Protected 訪問權(quán)限,便于派生類訪問。注意派生類的構(gòu)造函數(shù)中對基類數(shù)據(jù)成員的初始化方法即 Cir

3、cle(double *v,double yv,double vv):Point(*v,yv),以及構(gòu)造函數(shù)中對對象成員的初始化方法即 Line(double *v1,double yv1,double *v2,double yv2) : start(*v1,yv1),end(*v2,yv2) 【要求】 1 建立工程,錄入上述程序,改變數(shù)據(jù)實(shí)驗(yàn)之。 2 修改Point 類的數(shù)據(jù)成員* ,y 的訪問權(quán)限為private ,再運(yùn)行,結(jié)果如何?在Line類和Circle類中無法訪問Point類的私有成員*,y.3 如果不將Line 類設(shè)為 Point 類的友元,應(yīng)采取什么措施?為哪個類增加數(shù)據(jù)或函數(shù)

4、成員?2 編程:多層派生練習(xí),由上題Point 類和Circle 類繼續(xù)派生出Cylinder 類。要求計(jì)算圓柱體的底面積、側(cè)面積、全面積和體積。 #include#includeusing namespace std;const float PI=3.14;class Point friend class Line;protected:double *,y;public:Point() *=0;y=0;Point(double *v,double yv) *=*v;y=yv;double Area() return 0;void Show() cout*=* y=yPoint:operato

5、r =(cir);radius=cir.radius;return *this;double Area() return PI*radius*radius;void Show() cout*=* y=yradius=radiusendl;class Cylinder:public Circle protected:double height;public:Cylinder(double *v,double yv,double r,double h):Circle(*v,yv,r) height=h;double AreaC() return 2*PI*radius*height;double Volume() return PI*radius*radius*height;void Print() cout圓心:(*,y)t半徑:radiust高:heightendl;int main(

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論