【正文】
} 運行時多態(tài) : 在類的繼承層次結(jié)構(gòu)中,不同層次的類中可能具有同名但實現(xiàn)不同的函數(shù),需要在運行階段才能根據(jù)對象所屬的層次來確定調(diào)用哪個類中的同名函數(shù)。 y=cy。 s 1 。 p e r s o nc h a r I D [ 1 0 ] 。 s 1 。 p e r s o nc h a r I D [ 1 0 ] 。第 5章 多態(tài)性與虛函數(shù) ?本章的學(xué)習(xí)目的 客觀世界中的事物多種多樣、千姿百態(tài),各類事物都有其特殊性,這就是客觀世界的 多態(tài)性。c h a r N a m e [ 1 0 ]… … v i r t u a l v o i d d i s p l a y ( )s t u d e n tc h a r I D [ 1 0 ] 。 p d i s p l a y ( ) 。c h a r N a m e [ 1 0 ]… … v i r t u a l v o i d d i s p l a y ( )s t u d e n tc h a r I D [ 1 0 ] 。 p d i s p l a y ( ) 。} pointer(const pointer amp。 p e r s o nc h a r I D [ 1 0 ] 。 A [ 2 ] = s 2 。 靜態(tài)聯(lián)編 在編譯階段由編譯系統(tǒng)根據(jù)調(diào)用函數(shù)的操作參數(shù)來確定調(diào)用哪個同名函數(shù) ,并將函數(shù)調(diào)用與該函數(shù)體連接起來 . 例 51 靜態(tài)聯(lián)編 include class Student {public: void print() { cout“A student”endl。 ()。 } A student A graduate student A student A student A student 動態(tài)聯(lián)編 ? 只有在運行程序時才能 根據(jù)函數(shù)調(diào)用指令來 確定將要調(diào)用的函數(shù),這種在運行階段進(jìn)行的聯(lián)編稱為 動態(tài)聯(lián)編 。 s t u d e n t s 2 。 } }?動態(tài)聯(lián)編的優(yōu)點 是提供了更好的編程靈活性、問題的抽象性和程序的易維護性,缺點是與靜態(tài)聯(lián)編相比,函數(shù)調(diào)用速度慢。 一個函數(shù)一旦聲明為虛函數(shù),則在每層派生類中,該函數(shù)都保持虛函數(shù)特性。 例 52 靜態(tài)聯(lián)編和動態(tài)聯(lián)編 include class Student { public: virtual void print() { cout“A student”endl。 ::print()。在類的成員函數(shù)被聲明為虛函數(shù)后,派生類就具有多態(tài)性。 ? 內(nèi)聯(lián)成員函數(shù)不能聲明為虛函數(shù)。包含純虛函數(shù)的類稱為抽象類 。 y=w。抽象類不能用作參數(shù)類型、函數(shù)返回值類型或顯式轉(zhuǎn)換的類型,但可以說明或定義抽象類的指針或引用,該指針或引用可以指向抽象類的派生類對象,進(jìn)而實現(xiàn)多態(tài)性。 } }。 姓 姓姓 姓姓 姓 姓 姓姓 姓 姓 姓姓 姓姓 姓 姓 姓姓 姓 姓 姓姓 姓 姓 姓姓 姓 姓 姓姓 姓 姓 姓姓 姓 姓 姓姓姓姓姓姓姓姓姓姓姓 姓姓 姓姓 姓 姓 姓姓 姓 姓 姓姓 姓姓 姓 姓 姓姓 姓 姓 姓姓 姓 姓 姓姓 姓 姓 姓姓 姓 姓 姓姓 姓 姓 姓姓姓姓姓姓姓姓姓姓 雖然系統(tǒng)有時需要將教師和學(xué)生分成兩部分單獨管理,但有時也需要將全體人員作為一類對象進(jìn)行統(tǒng)一管理,以提高管理效率。而且以后要用數(shù)據(jù)時能將它們從磁盤文件中讀出。 Square S1。 例 53抽象類的定義和應(yīng)用 class Shapes { protected: