面向?qū)ο蠹夹g(shù)第五章_第1頁(yè)
面向?qū)ο蠹夹g(shù)第五章_第2頁(yè)
面向?qū)ο蠹夹g(shù)第五章_第3頁(yè)
面向?qū)ο蠹夹g(shù)第五章_第4頁(yè)
面向?qū)ο蠹夹g(shù)第五章_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第5章運(yùn)行時(shí)的多態(tài)性和抽象類第第5 5章章 運(yùn)行時(shí)的多態(tài)性和抽象類運(yùn)行時(shí)的多態(tài)性和抽象類5.1 面向?qū)ο蟮闹匾卣鳎憾鄳B(tài)性面向?qū)ο蟮闹匾卣鳎憾鄳B(tài)性 5.2 運(yùn)行時(shí)的多態(tài)性運(yùn)行時(shí)的多態(tài)性 5.3 虛函數(shù)虛函數(shù) 5.4 純虛函數(shù)與抽象類純虛函數(shù)與抽象類 第5章運(yùn)行時(shí)的多態(tài)性和抽象類5.1 面向?qū)ο蟮闹匾卣鳎憾鄳B(tài)性面向?qū)ο蟮闹匾卣鳎憾鄳B(tài)性多態(tài)性多態(tài)性(polymorphism)是面向?qū)ο蟪绦蛟O(shè)計(jì)的又一個(gè)重是面向?qū)ο蟪绦蛟O(shè)計(jì)的又一個(gè)重要特性。要特性。p 多態(tài)性體現(xiàn)了多態(tài)性體現(xiàn)了不同層次的類以及一個(gè)類的內(nèi)部,類的同名成員函數(shù)之間的關(guān)系p多態(tài)性多態(tài)性提供了程序設(shè)計(jì)更大的靈活性提供了程序設(shè)計(jì)更大的靈活

2、性p多態(tài)性多態(tài)性可以降低程序的復(fù)雜性可以降低程序的復(fù)雜性p多態(tài)性多態(tài)性可以設(shè)計(jì)與實(shí)現(xiàn)一個(gè)易于擴(kuò)展的系統(tǒng)可以設(shè)計(jì)與實(shí)現(xiàn)一個(gè)易于擴(kuò)展的系統(tǒng)第5章運(yùn)行時(shí)的多態(tài)性和抽象類 多態(tài)性多態(tài)性:就是不同對(duì)象收到相同的消息時(shí),產(chǎn)生不同的動(dòng)作。 通俗地說(shuō),多態(tài)性是指用一個(gè)名字定義不同的函數(shù),這些函數(shù)執(zhí)行不同但又類似的操作,即用同樣的接口訪問(wèn)功能不同的函數(shù),從而實(shí)現(xiàn)“一個(gè)接口,多種方法一個(gè)接口,多種方法”例例1:漢字里的:漢字里的“開開”例例2:狗的嗅覺:狗的嗅覺例例3:一個(gè)父親,不同兒子:一個(gè)父親,不同兒子5.1.1 多態(tài)性概述多態(tài)性概述第5章運(yùn)行時(shí)的多態(tài)性和抽象類5.1.2 面向?qū)ο笕髾C(jī)制面向?qū)ο笕髾C(jī)制第5

3、章運(yùn)行時(shí)的多態(tài)性和抽象類多態(tài)性可以分為:多態(tài)性可以分為:l 重載多態(tài)重載多態(tài)l 強(qiáng)制多態(tài)強(qiáng)制多態(tài)l 參數(shù)多態(tài)參數(shù)多態(tài)l 包含多態(tài)包含多態(tài)5.1.3 多態(tài)性的分類多態(tài)性的分類第5章運(yùn)行時(shí)的多態(tài)性和抽象類 重載多態(tài)重載多態(tài) 專用多態(tài)專用多態(tài) 強(qiáng)制多態(tài)強(qiáng)制多態(tài)多態(tài)多態(tài) 參數(shù)多態(tài)參數(shù)多態(tài) 通用多態(tài)通用多態(tài) 包含多態(tài)包含多態(tài)多態(tài)性分類示意圖多態(tài)性分類示意圖第5章運(yùn)行時(shí)的多態(tài)性和抽象類u 強(qiáng)制多態(tài)強(qiáng)制多態(tài)-類型轉(zhuǎn)換類型轉(zhuǎn)換一一系統(tǒng)預(yù)定義類型:系統(tǒng)預(yù)定義類型:兩種轉(zhuǎn)換:隱式和顯式兩種轉(zhuǎn)換:隱式和顯式1、隱式類型轉(zhuǎn)換、隱式類型轉(zhuǎn)換規(guī)則:規(guī)則:(1)在附值表達(dá)式在附值表達(dá)式A=B時(shí),將時(shí),將B值轉(zhuǎn)換成值轉(zhuǎn)換成A

4、的類型,然后賦值的類型,然后賦值#include iostream.hvoid main() int i; float f=3.333; i=f; coutfendl; coutiendl;第5章運(yùn)行時(shí)的多態(tài)性和抽象類u 強(qiáng)制多態(tài)強(qiáng)制多態(tài)-類型轉(zhuǎn)換類型轉(zhuǎn)換一一系統(tǒng)預(yù)定義類型:系統(tǒng)預(yù)定義類型:兩種轉(zhuǎn)換:隱式和顯式兩種轉(zhuǎn)換:隱式和顯式1、隱式類型轉(zhuǎn)換、隱式類型轉(zhuǎn)換規(guī)則:規(guī)則:(2)當(dāng)兩個(gè)操作對(duì)象不一致時(shí),將級(jí)別低的自動(dòng)轉(zhuǎn)換成高的,當(dāng)兩個(gè)操作對(duì)象不一致時(shí),將級(jí)別低的自動(dòng)轉(zhuǎn)換成高的,然后運(yùn)算然后運(yùn)算#include iostream.hvoid main() int i=1; float f=3.3;

5、 couti+fendl; 第5章運(yùn)行時(shí)的多態(tài)性和抽象類u 強(qiáng)制多態(tài)強(qiáng)制多態(tài)-類型轉(zhuǎn)換類型轉(zhuǎn)換2、顯式類型轉(zhuǎn)換、顯式類型轉(zhuǎn)換規(guī)則:規(guī)則:(1)(1)強(qiáng)制轉(zhuǎn)換法強(qiáng)制轉(zhuǎn)換法 (類型名)表達(dá)式(類型名)表達(dá)式 cout(float)(i+jcout(float)(i+j););(2)(2)函數(shù)法函數(shù)法 coutfloat(i+jcoutfloat(i+j););第5章運(yùn)行時(shí)的多態(tài)性和抽象類u 強(qiáng)制多態(tài)強(qiáng)制多態(tài)-類型轉(zhuǎn)換類型轉(zhuǎn)換二二類類型與系統(tǒng)預(yù)定義類類型與系統(tǒng)預(yù)定義三種方式:構(gòu)造函數(shù)、類型轉(zhuǎn)換函數(shù)、運(yùn)算符重載三種方式:構(gòu)造函數(shù)、類型轉(zhuǎn)換函數(shù)、運(yùn)算符重載1、構(gòu)造函數(shù)、構(gòu)造函數(shù)規(guī)則:規(guī)則:(1)只能將參

6、數(shù)類型向類類型轉(zhuǎn)換,只能將參數(shù)類型向類類型轉(zhuǎn)換,反之不行反之不行#include iostream.hclass example private: int num; public: example(int);void print();example:example(int n) num=n; coutIntializing with:numendl;第5章運(yùn)行時(shí)的多態(tài)性和抽象類void example:print()coutnum=numendl; void main() example X=example(3); X.print(); cout-n; example Y=6; Y.print

7、(); 第5章運(yùn)行時(shí)的多態(tài)性和抽象類u 強(qiáng)制多態(tài)強(qiáng)制多態(tài)-類型轉(zhuǎn)換類型轉(zhuǎn)換二二類類型與系統(tǒng)預(yù)定義類類型與系統(tǒng)預(yù)定義2、類型轉(zhuǎn)換函數(shù)、類型轉(zhuǎn)換函數(shù)規(guī)則:規(guī)則:(1)可以將用戶自定義的類類型轉(zhuǎn)換成基本類型可以將用戶自定義的類類型轉(zhuǎn)換成基本類型(2) 無(wú)返回值,函數(shù)名就是轉(zhuǎn)換類型無(wú)返回值,函數(shù)名就是轉(zhuǎn)換類型(3) 無(wú)任何參數(shù)無(wú)任何參數(shù)定義格式:定義格式:class public: operator ( ); ;第5章運(yùn)行時(shí)的多態(tài)性和抽象類#include iostream.hclass complex private: float real,imag; public: complex(float r

8、=0,float i=0) real=r;imag=i; coutConstructing.endl; operator float() /注意空格注意空格 coutTo float.endl; return real;第5章運(yùn)行時(shí)的多態(tài)性和抽象類operator int() coutTo Int.endl; return int(real); void print() coutreal,imag)endl; void main() complex A(2.2,4.4); A.print(); coutfloat(A)*0.5endl; /coutA.operator float()*0.5e

9、ndl; complex B(4.4,6.6); B.print(); coutint(B)*2display(); /調(diào)用基類的調(diào)用基類的displayp = &g1;p-display(); /調(diào)用基類的調(diào)用基類的display第5章運(yùn)行時(shí)的多態(tài)性和抽象類p 存在問(wèn)題存在問(wèn)題 指向基類的指針p,不管賦給它的對(duì)象地址的不同 語(yǔ)句“p-display()調(diào)用的始終是基類中定義的版本。p 根本原因根本原因 在派生類中雖然繼承了基類的成員函數(shù)display() ,但在派生類中又定義了一個(gè)同名的display()函數(shù),而這種改變?cè)陟o態(tài)聯(lián)編的條件下編譯器并不知道。問(wèn)題問(wèn)題:那么,怎樣獲得我們那

10、么,怎樣獲得我們所希望的結(jié)果呢?所希望的結(jié)果呢?解決方案解決方案 必須通知編譯器這種可能的改變,即需要進(jìn)行動(dòng)態(tài)動(dòng)態(tài)聯(lián)編聯(lián)編。為了實(shí)現(xiàn)動(dòng)態(tài)聯(lián)編,C+提出了虛函數(shù)虛函數(shù)的概念第5章運(yùn)行時(shí)的多態(tài)性和抽象類5.2.1 虛函數(shù)和運(yùn)行時(shí)的多態(tài)性虛函數(shù)和運(yùn)行時(shí)的多態(tài)性C+語(yǔ)言中,前邊標(biāo)有關(guān)鍵字語(yǔ)言中,前邊標(biāo)有關(guān)鍵字virtual的成員函數(shù)稱為虛函的成員函數(shù)稱為虛函數(shù)數(shù)(或虛擬函數(shù)或虛擬函數(shù))。對(duì)于虛函數(shù),系統(tǒng)將按照滯后聯(lián)編的方式考。對(duì)于虛函數(shù),系統(tǒng)將按照滯后聯(lián)編的方式考慮對(duì)象的成員函數(shù)調(diào)用。慮對(duì)象的成員函數(shù)調(diào)用。聲明虛函數(shù)的語(yǔ)句格式為:聲明虛函數(shù)的語(yǔ)句格式為:virtual 返回值類型返回值類型 函數(shù)名函數(shù)

11、名(參數(shù)表參數(shù)表) 函數(shù)體函數(shù)體;第5章運(yùn)行時(shí)的多態(tài)性和抽象類u聲明虛函數(shù)時(shí)注意事項(xiàng)聲明虛函數(shù)時(shí)注意事項(xiàng) (1) 只有在只有在類層次類層次中才可以設(shè)計(jì)虛函數(shù)。只有一個(gè)類沒有中才可以設(shè)計(jì)虛函數(shù)。只有一個(gè)類沒有設(shè)計(jì)虛函數(shù)的必要。設(shè)計(jì)虛函數(shù)的必要。 (2) 若基類和派生類有同名同參的成員函數(shù),基類被虛化,若基類和派生類有同名同參的成員函數(shù),基類被虛化,派生類將自動(dòng)被虛化派生類將自動(dòng)被虛化 (3) 派生類中聲明的虛函數(shù)派生類中聲明的虛函數(shù),其其成員函數(shù)名成員函數(shù)名、參數(shù)個(gè)數(shù)參數(shù)個(gè)數(shù)、參數(shù)類型以及返回類型,要和基類中參數(shù)類型以及返回類型,要和基類中聲明的虛函數(shù)的函數(shù)名、聲明的虛函數(shù)的函數(shù)名、參數(shù)個(gè)數(shù)、參

12、數(shù)類型以及返回類型參數(shù)個(gè)數(shù)、參數(shù)類型以及返回類型完全一樣完全一樣 (4) 若不滿足若不滿足(3),派生類虛特性消失派生類虛特性消失 (5) 基類未虛基類未虛,派生類虛化,派生類虛化,虛特性消失虛特性消失 (6) 由于使用虛函數(shù)時(shí)要由于使用虛函數(shù)時(shí)要利用賦值兼容規(guī)則利用賦值兼容規(guī)則,要求派生類,要求派生類必須由基類的必須由基類的公有繼承公有繼承方式產(chǎn)生。方式產(chǎn)生。第5章運(yùn)行時(shí)的多態(tài)性和抽象類u不不能聲明為虛函數(shù)能聲明為虛函數(shù)的函數(shù)的函數(shù) 靜態(tài)成員函數(shù)靜態(tài)成員函數(shù) 根據(jù)靜態(tài)函數(shù)的特性,它不屬于某一個(gè)對(duì)象,不具備多態(tài)根據(jù)靜態(tài)函數(shù)的特性,它不屬于某一個(gè)對(duì)象,不具備多態(tài)性的條件和特征。性的條件和特征。內(nèi)

13、聯(lián)成員函數(shù)內(nèi)聯(lián)成員函數(shù)因?yàn)閮?nèi)聯(lián)函數(shù)的執(zhí)行代碼是確定的,不具有多態(tài)性的特征。因?yàn)閮?nèi)聯(lián)函數(shù)的執(zhí)行代碼是確定的,不具有多態(tài)性的特征。構(gòu)造函數(shù)構(gòu)造函數(shù)不能是虛函數(shù),不能是虛函數(shù),析構(gòu)函數(shù)可以聲明為虛函數(shù)!析構(gòu)函數(shù)可以聲明為虛函數(shù)!u虛析構(gòu)函數(shù)的定義:虛析構(gòu)函數(shù)的定義:virtual 類名類名(); 函數(shù)體函數(shù)體第5章運(yùn)行時(shí)的多態(tài)性和抽象類通過(guò)通過(guò) 對(duì)象指針對(duì)象指針 對(duì)象引用對(duì)象引用調(diào)用虛函數(shù)實(shí)現(xiàn)動(dòng)態(tài)聯(lián)編調(diào)用虛函數(shù)實(shí)現(xiàn)動(dòng)態(tài)聯(lián)編 u虛函數(shù)的調(diào)用虛函數(shù)的調(diào)用p 應(yīng)用虛函數(shù),可以使程序員不必過(guò)多的考慮類的層次關(guān)系p 無(wú)須顯示的寫出虛函數(shù)的路徑p 只需將對(duì)象指針指向相應(yīng)的派生類或引用相應(yīng)的對(duì)象,就可以實(shí)現(xiàn)動(dòng)態(tài)聯(lián)

14、編,實(shí)現(xiàn)對(duì)消息的正確響應(yīng)。第5章運(yùn)行時(shí)的多態(tài)性和抽象類Class Student private: char name20; public: virtual void display(); /利用虛函數(shù)實(shí)現(xiàn)滯后鏈編利用虛函數(shù)實(shí)現(xiàn)滯后鏈編;Class Graduate:public Student public:void display();第5章運(yùn)行時(shí)的多態(tài)性和抽象類student s1(張三張三,電信電信0801);graduate g1(李四李四,電信電信0802);student *p;p = &s1;p-display(); /調(diào)用基類的調(diào)用基類的displayp = &

15、;g1;p-display();/調(diào)用派生類的調(diào)用派生類的display第5章運(yùn)行時(shí)的多態(tài)性和抽象類利用虛函數(shù)實(shí)現(xiàn)運(yùn)行時(shí)的多態(tài)性的設(shè)計(jì)方法是:利用虛函數(shù)實(shí)現(xiàn)運(yùn)行時(shí)的多態(tài)性的設(shè)計(jì)方法是: (1) 設(shè)計(jì)一個(gè)類層次,并在類層次中定義一個(gè)或一個(gè)以上的虛函數(shù)。(2) 在外部程序中定義基類的對(duì)象指針。(3) 在外部程序中,當(dāng)對(duì)象指針調(diào)用一個(gè)對(duì)象的虛函數(shù)時(shí),若此時(shí)該對(duì)象指針指向基類對(duì)象,則系統(tǒng)就調(diào)用基類中的相應(yīng)虛成員函數(shù);若此時(shí)基類對(duì)象指針指向派生類對(duì)象,則系統(tǒng)就調(diào)用派生類中的相應(yīng)成員函數(shù)。u這樣就實(shí)現(xiàn)了運(yùn)行時(shí)的多態(tài)性!這樣就實(shí)現(xiàn)了運(yùn)行時(shí)的多態(tài)性!第5章運(yùn)行時(shí)的多態(tài)性和抽象類5.2.3 虛函數(shù)和派生類對(duì)基類

16、成員函數(shù)覆蓋的區(qū)別虛函數(shù)和派生類對(duì)基類成員函數(shù)覆蓋的區(qū)別1)虛函數(shù)也像派生類對(duì)基類成員函數(shù)的覆蓋那樣,在派虛函數(shù)也像派生類對(duì)基類成員函數(shù)的覆蓋那樣,在派生類中覆蓋了基類的成員函數(shù),而且要求派生類中定義虛函數(shù)生類中覆蓋了基類的成員函數(shù),而且要求派生類中定義虛函數(shù)的參數(shù)個(gè)數(shù)、參數(shù)類型和返回類型要與基類中定義虛函數(shù)的參的參數(shù)個(gè)數(shù)、參數(shù)類型和返回類型要與基類中定義虛函數(shù)的參數(shù)個(gè)數(shù)、參數(shù)類型和返回類型完全一樣。數(shù)個(gè)數(shù)、參數(shù)類型和返回類型完全一樣。 2)對(duì)于派生類對(duì)基類成員函數(shù)的覆蓋來(lái)說(shuō),調(diào)用成員函數(shù))對(duì)于派生類對(duì)基類成員函數(shù)的覆蓋來(lái)說(shuō),調(diào)用成員函數(shù)的對(duì)象在程序編譯時(shí)就已確定,即要么是基類對(duì)象,要么是派的

17、對(duì)象在程序編譯時(shí)就已確定,即要么是基類對(duì)象,要么是派生類對(duì)象,只能屬于固定的一種,不能在程序運(yùn)行時(shí)改變。生類對(duì)象,只能屬于固定的一種,不能在程序運(yùn)行時(shí)改變。 第5章運(yùn)行時(shí)的多態(tài)性和抽象類但對(duì)于虛函數(shù)來(lái)說(shuō),但對(duì)于虛函數(shù)來(lái)說(shuō),由于系統(tǒng)采用滯后聯(lián)編的由于系統(tǒng)采用滯后聯(lián)編的編譯方式,編譯方式,調(diào)用成員函數(shù)的對(duì)象要在程序運(yùn)行時(shí)才調(diào)用成員函數(shù)的對(duì)象要在程序運(yùn)行時(shí)才確定,要根據(jù)確定,要根據(jù)對(duì)象指針對(duì)象指針當(dāng)前指向的對(duì)象是基類對(duì)象當(dāng)前指向的對(duì)象是基類對(duì)象還是派生類對(duì)象,來(lái)決定當(dāng)前調(diào)用的成員函數(shù)是基還是派生類對(duì)象,來(lái)決定當(dāng)前調(diào)用的成員函數(shù)是基類的成員函數(shù),還是派生類的成員函數(shù)。類的成員函數(shù),還是派生類的成員函數(shù)

18、。 如果對(duì)象指針當(dāng)前指向的是基類對(duì)象,則調(diào)用如果對(duì)象指針當(dāng)前指向的是基類對(duì)象,則調(diào)用基類的成員函數(shù);如果對(duì)象指針當(dāng)前指向的是派生基類的成員函數(shù);如果對(duì)象指針當(dāng)前指向的是派生類對(duì)象,則調(diào)用派生類的成員函數(shù)。類對(duì)象,則調(diào)用派生類的成員函數(shù)。第5章運(yùn)行時(shí)的多態(tài)性和抽象類編程實(shí)例編程實(shí)例1 大學(xué)人員問(wèn)題。大學(xué)人員問(wèn)題。設(shè)計(jì)要求:大學(xué)人員分為兩類,一類是教學(xué)人員,設(shè)計(jì)要求:大學(xué)人員分為兩類,一類是教學(xué)人員,另一類是行政人員,這兩類人員的信息管理系統(tǒng)中,另一類是行政人員,這兩類人員的信息管理系統(tǒng)中,一部分信息內(nèi)容是相同的,但另一部分信息內(nèi)容是不一部分信息內(nèi)容是相同的,但另一部分信息內(nèi)容是不相同的。設(shè)教學(xué)人

19、員的信息包括姓名、年齡和專業(yè)編相同的。設(shè)教學(xué)人員的信息包括姓名、年齡和專業(yè)編號(hào),行政人員的信息包括姓名、年齡和業(yè)績(jī)?cè)u(píng)級(jí)。號(hào),行政人員的信息包括姓名、年齡和業(yè)績(jī)?cè)u(píng)級(jí)。 現(xiàn)要求定義一個(gè)對(duì)象數(shù)組能保存現(xiàn)要求定義一個(gè)對(duì)象數(shù)組能保存3個(gè)學(xué)校教學(xué)人員個(gè)學(xué)校教學(xué)人員和和2個(gè)行政人員的實(shí)例對(duì)象,并打印出各自信息,并個(gè)行政人員的實(shí)例對(duì)象,并打印出各自信息,并設(shè)計(jì)一個(gè)測(cè)試程序進(jìn)行測(cè)試。設(shè)計(jì)一個(gè)測(cè)試程序進(jìn)行測(cè)試。第5章運(yùn)行時(shí)的多態(tài)性和抽象類5.3 純虛函數(shù)與抽象類純虛函數(shù)與抽象類在一個(gè)圖形系統(tǒng)中,有一個(gè)一般的閉合圖形類CClosedFigureCClosedFigureCPolygonCCircleCRectang

20、leCTriangle問(wèn)題:由于不知道問(wèn)題:由于不知道CClosedFigure的數(shù)據(jù)如何表現(xiàn),的數(shù)據(jù)如何表現(xiàn),故它的故它的Perimeter、Area和和Draw函數(shù)無(wú)法實(shí)現(xiàn)?函數(shù)無(wú)法實(shí)現(xiàn)?第5章運(yùn)行時(shí)的多態(tài)性和抽象類5.3.1 純虛函數(shù)純虛函數(shù)在基類中不對(duì)虛函數(shù)給出有意義的實(shí)現(xiàn)在基類中不對(duì)虛函數(shù)給出有意義的實(shí)現(xiàn),它只是在派它只是在派生類中有具體的意義。這時(shí)基類中的虛函數(shù)只是一個(gè)生類中有具體的意義。這時(shí)基類中的虛函數(shù)只是一個(gè)入口,具體的目的地由不同的派生類中的對(duì)象決定。入口,具體的目的地由不同的派生類中的對(duì)象決定。這個(gè)虛函數(shù)稱為這個(gè)虛函數(shù)稱為純虛函數(shù)純虛函數(shù)。class virtual ()

21、=0;.;第5章運(yùn)行時(shí)的多態(tài)性和抽象類5.3.2 抽象類抽象類p定義定義 至少包含一個(gè)純虛函數(shù)的類,稱為抽象類。至少包含一個(gè)純虛函數(shù)的類,稱為抽象類。p 作用作用抽象類作為派生類組抽象類作為派生類組統(tǒng)一的根統(tǒng)一的根,組成一個(gè)類層次組成一個(gè)類層次。純虛函。純虛函數(shù)為該類層次提化供數(shù)為該類層次提化供統(tǒng)一接口統(tǒng)一接口。派生類可以具體化這些虛派生類可以具體化這些虛函數(shù)的操作行為,完成各個(gè)類特有的屬性函數(shù)的操作行為,完成各個(gè)類特有的屬性p 抽象類不能初始化具體對(duì)象,但可以定義指針變量抽象類不能初始化具體對(duì)象,但可以定義指針變量必須在派生類中必須在派生類中重載純虛函數(shù)重載純虛函數(shù),否則會(huì)產(chǎn)生程序的運(yùn)行錯(cuò),

22、否則會(huì)產(chǎn)生程序的運(yùn)行錯(cuò)誤!誤!第5章運(yùn)行時(shí)的多態(tài)性和抽象類class Aprotected:int x;public:A()x =1000; virtual void print()=0; /定義純虛函數(shù)定義純虛函數(shù);class B:public A /派生類派生類private: int y;public:B() y=2000;void print()cout “y=”yn;/重新定義純虛函數(shù)重新定義純虛函數(shù);class C:public A /派生類派生類int z;public:C()z=3000;void print()cout “z=”zprint();pa=&c; pa-print(); A a; pa=&a; pa-print( );y=2000z=3000抽象類抽象類不能定義抽象類的對(duì)象不能定義抽象類的對(duì)象第5章運(yùn)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論