C++實(shí)驗(yàn)四繼承(1)_第1頁
C++實(shí)驗(yàn)四繼承(1)_第2頁
C++實(shí)驗(yàn)四繼承(1)_第3頁
C++實(shí)驗(yàn)四繼承(1)_第4頁
C++實(shí)驗(yàn)四繼承(1)_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)四繼承派生類定義及訪問權(quán)限一、實(shí)驗(yàn)?zāi)康? 理解繼承的概念、特性及在C+語言中的實(shí)現(xiàn)方法;2掌握C+語言派生類的定義,熟悉不同的繼承方式(派生方式);3掌握派生類構(gòu)造函數(shù)的定義及在定義、釋放派生類對(duì)象時(shí)構(gòu)造函數(shù)、析構(gòu)函數(shù)的執(zhí) 行順序;4掌握不同繼承方式下,基類的成員在派生類中的訪問特性;5初步熟悉派生類的應(yīng)用。二、實(shí)驗(yàn)學(xué)時(shí)課內(nèi)實(shí)驗(yàn):2課時(shí)課外練習(xí):2課時(shí)三本實(shí)驗(yàn)涉及的新知識(shí)繼承的有關(guān)概念1 繼承是面向?qū)ο蟪绦蛟O(shè)計(jì)思想最重要的概念之一,其主要作用是提高軟件的可重用 性和可維護(hù)性。在 C+中,實(shí)現(xiàn)繼承的機(jī)制是通過派生得到的,原類(被繼承的類)稱為基 類,在基類的基礎(chǔ)上創(chuàng)建的新類稱為派生類。2.

2、繼承具有層次結(jié)構(gòu), 越在上面的類越具有普通性和共性, 而下層類比上層類更具體, 越在下層的類越細(xì)化、專門化; 同時(shí),繼承具有傳遞性, 即派生類能自動(dòng)繼承上層基類的全 部數(shù)據(jù)結(jié)構(gòu)及操作方法(數(shù)據(jù)成員及成員函數(shù)) 。3. 在C+中,繼承分為單繼承與多繼承。只有一個(gè)基類的繼承稱為單繼承;有二個(gè)或 以上基類的繼承稱為多繼承。派生類的定義1 定義格式class派生類名:繼承方式基類名 派生類新定義的成員 ;2說明 在定義派生類時(shí)用 “:將派生類與基類分開,構(gòu)成類的層次結(jié)構(gòu);派生類與普通類的定義一樣,仍然包括數(shù)據(jù)成員與成員函數(shù)。派生類的構(gòu)造函數(shù)與析構(gòu)函數(shù)1 派生類的構(gòu)造函數(shù)定義格式派生類名(參數(shù)表):基類

3、名(參數(shù)名1,參數(shù)名2,) 構(gòu)造函數(shù)函數(shù)體說明 如果基類中顯式定義了構(gòu)造函數(shù)為基類數(shù)據(jù)成員賦初值,在派生類中也應(yīng)顯式定義 構(gòu)造函數(shù),除為新增數(shù)據(jù)成員進(jìn)行初始化外,同時(shí)也為基類的數(shù)據(jù)成員提供初始化的參數(shù)表。 派生類的構(gòu)造函數(shù)也可以重載。 可以定義派生類的無參構(gòu)造函數(shù),有參構(gòu)造函數(shù)及帶缺省參數(shù)的構(gòu)造函數(shù)。2 構(gòu)造函數(shù)與析構(gòu)函數(shù)的執(zhí)行順序定義派生類對(duì)象時(shí),先執(zhí)行基類的構(gòu)造函數(shù),再執(zhí)行派生類的構(gòu)造函數(shù)。 釋放派生類對(duì)象時(shí),先調(diào)用派生類的析構(gòu)函數(shù),再調(diào)用基類的析構(gòu)函數(shù)。3、在派生類中含有對(duì)象成員(派生類為容器類)時(shí)的構(gòu)造函數(shù)的定義格式派生類名(總參數(shù)表):基類名(參數(shù)表),成員對(duì)象名(參數(shù)表)構(gòu)造函數(shù)函

4、數(shù)體說明 定義派生類對(duì)象時(shí),先執(zhí)行基類構(gòu)造函數(shù),再執(zhí)行成員對(duì)象所屬類的構(gòu)造函數(shù),最 后執(zhí)行派生類的構(gòu)造函數(shù)。 釋放派生類對(duì)象時(shí),先調(diào)用派生類的析構(gòu)函數(shù),再調(diào)用成員對(duì)象所屬類的析構(gòu)函數(shù),最后調(diào)用基類的析構(gòu)函數(shù)為派生類對(duì)象成員提供值的普通成員函數(shù)1 在派生類中,通常也應(yīng)定義為其對(duì)象成員提供值的普通成員函數(shù)。2.為派生類對(duì)象成員提供值的普通成員函數(shù),既要為派生類的新增的數(shù)據(jù)成員提供值,也應(yīng)為所繼承的基類的數(shù)據(jù)成員提供值,通常可以通過調(diào)用基類成員函數(shù)實(shí)現(xiàn)。不同繼承方式下基類成員在派生類中的訪問特性1 .繼承方式在C+中,繼承方式包括公有繼承(public)、私有繼承(private)和保護(hù)繼承(pro

5、tected)三種繼承方式,相應(yīng)的派生類分別稱為公有派生類、私有派生類、保護(hù)派生類。2.不同繼承方式下基類成員在派生類中的訪問特性 基類的私有成員在派生類的作用域內(nèi)均不可見,即無論是哪種繼承方式,派生類的 成員函數(shù)均不能使用基類的私有成員,而只能調(diào)用基類中的公有成員函數(shù)訪問。 在公有繼承方式下,基類中的公有成員、保護(hù)成員在派生類中的訪問權(quán)限不變,即 仍為公有成員、保護(hù)成員。 在保護(hù)繼承方式下,基類中的公有成員、保護(hù)成員在派生類中均改變?yōu)楸Wo(hù)成員。 在私有繼承方式下,基類中的公有成員、保護(hù)成員在派生類中均改變?yōu)樗接谐蓡T。四、實(shí)驗(yàn)內(nèi)容驗(yàn)證及認(rèn)知實(shí)驗(yàn)按要求調(diào)試下列程序,并回答相關(guān)問題。程序 1 (e

6、xp_401.cpp)#in clude<iostream>using n amespace std;class Base基類Base的定義 private:float x,y;public:Base(float a=0,float b=0)x=a;y=b;void prin t(void) cout<<"x="<<x<<"y="<<y;class Derived:public Base 派生類 Derived的定義注意定義方法 private:float z;public:Derived(fl

7、oat a=0,float b=0,float c=0):Base(a,b) z=c;派生類的構(gòu)造函數(shù)定義void prin t(void)/派生類的成員函數(shù) Base:print(); 調(diào)用基類 Base 的成員函數(shù) print(); cout<<" z="<<z;void mai n(void) Base a(10.0,20.0);Derived b(10.0,20.0,30.0);a. pri nt();cout<<e ndl;b. pri nt();cout<<e ndl;b.Base:pri nt();cout<

8、;<e ndl;問題:運(yùn)行程序的輸出結(jié)果為: 程序中“ a.print(); ”調(diào)用的是類成員中的“ print() ”成員函數(shù),“ b.print(); ”調(diào)用的是 類成員中的"print() ”成員函數(shù),“ b.Base:print(); ”調(diào)用的是類成員中的“ print() ”成員函數(shù)。構(gòu)造函數(shù)“ Derived(float a=0,float b=0,float c=0):Base(a,b) ” 中的“ Base(a,b)” 的作用 是:。 將派生類定義中的“public"改為"private",重新編譯程序,程序中語句會(huì)出現(xiàn)編譯錯(cuò),其原

9、因是 。知識(shí)應(yīng)用實(shí)驗(yàn)1 分析下列程序,先寫出程序的輸出結(jié)果,再上機(jī)運(yùn)行程序驗(yàn)證其正確性,如果不正 確,請(qǐng)認(rèn)真分析出錯(cuò)原因。程序 2 (exp_402.cpp)#in clude<iostream>using n amespace std;class Base private:float x,y;public:Base(float a=0,float b=0)你分析的程序輸出結(jié)果是:程序的實(shí)際輸出結(jié)果是:x=a;y=b;cout<<"基類構(gòu)造函數(shù)被調(diào)用!n"Base()cout<<"基類析構(gòu)函數(shù)被調(diào)用!n"void pr

10、in t(void) cout<<"x="<<x<<"y="<<y;class Derived:public Base private:float z;public:Derived(float a=0,float b=0,float c=0):Base(a,b) z=c;cout<<"派生類構(gòu)造函數(shù)被調(diào)用!n"Derived()cout<<"派生類析構(gòu)函數(shù)被調(diào)用!n"void prin t(void) Base:pri nt();cout<

11、;<" z="<<z;void mai n(void) Base a(10.0,20.0);Derived b(10.0,20.0,30.0);a. pri nt();cout<<e ndl;b. pri nt();cout<<e ndl;程序 3 (exp_403.cpp)#in clude<iostream.h>class Data private:int da;public:Data( int x=0) da=x;cout<<" Data類的構(gòu)造函數(shù)被調(diào)用!"<<endl

12、;Data() cout<<" Data 類的析構(gòu)函數(shù)被調(diào)用!"<<endl;你分析的程序輸出結(jié)果是:程序的實(shí)際輸出結(jié)果是:;class A private :int a;public :A(int x=0) a=x;cout<<" A類的構(gòu)造函數(shù)被調(diào)用!"<<endl;A() cout<<" A 類的析構(gòu)函數(shù)被調(diào)用!"<<e ndl;class B : public A private :int b;Data c;public :B(i nt x=0,i nt

13、y=O,i nt z=O):A(x),c(y) b=z;cout<<" B類的構(gòu)造函數(shù)被調(diào)用!"<<endl;B() cout<<" B 類的析構(gòu)函數(shù)被調(diào)用!"<<e ndl;void mai n() B a;2 完善、調(diào)試通過下列程序,并按所要求回答問題。程序 4( exp_404.cpp)#in clude<iostream>using n amespace std;class Base基類Base的定義 private:float x,y;public:Base(float a=0,flo

14、at b=0)x=a;y=b;void setBase(float a=0,float b=0)x=a;y=b;void prin t(void) cout<<"x="<<x<<"ny="<<y<<e ndl;class Derived:public Base 派生類 Derived 的定義 private:float z;public:Derived( (1):(2) z=c;/派生類的構(gòu)造函數(shù)定義void setDerived( (3) );z=c;void prin t(void)/派生類的成員函數(shù) Base:print();/ 調(diào)用基類 Base 的成員函數(shù) print(); cout<<"z="<<z<<e ndl;void mai n(void) Derived b(10.0,20.0,30.0);b.pri nt();b.setDerived(15.5,25.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論