一、多態(tài)性的概念 多態(tài)性分為:靜態(tài)多態(tài)性和動(dòng)態(tài)多態(tài)性 靜態(tài)多態(tài)性 在程序編譯時(shí),系統(tǒng)就決定調(diào)用哪個(gè)函數(shù),又稱為編譯時(shí)的多態(tài)性 函數(shù)重載、運(yùn)算符重載 動(dòng)態(tài)多態(tài)性 在程序運(yùn)行過程中才動(dòng)態(tài)地確定操作所針對(duì)的對(duì)象,又稱為運(yùn)行時(shí)的多態(tài)性 動(dòng)態(tài)多態(tài)性是通過虛函數(shù)來實(shí)現(xiàn)的 二、虛函數(shù) 在類的繼承層次結(jié)構(gòu)中,在不同的層次中可以出現(xiàn)名字相同,參數(shù)個(gè)數(shù)和類型都相同而功能不同的函數(shù),編譯系統(tǒng)按照同名成員的隱藏原則決定調(diào)用的對(duì)象 虛函數(shù) 在類的繼承層次結(jié)構(gòu)中,在不同的層次中可以出現(xiàn)名字相同,參數(shù)個(gè)數(shù)和類型都相同而功能不同的函數(shù),編譯系統(tǒng)按照同名成員的隱藏原則決定調(diào)用的對(duì)象 C++中的虛函數(shù)允許在派生類中重新定義與基類同名的函數(shù),并且可以通過基類指針或引用來訪問基類和派生類中的同名函數(shù) 虛函數(shù)的使用方法 在基類中用virtual聲明成員函數(shù)為虛函數(shù),就可以在派生類中重新定義此函數(shù),為它賦予新的功能,并能方便地被調(diào)用 三、多態(tài)性的概念 多態(tài)性分為:靜態(tài)多態(tài)性和動(dòng)態(tài)多態(tài)性 靜態(tài)多態(tài)性 在程序編譯時(shí),系統(tǒng)就決定調(diào)用哪個(gè)函數(shù),又稱為編譯時(shí)的多態(tài)性 函數(shù)重載、運(yùn)算符重載 動(dòng)態(tài)多態(tài)性 在程序運(yùn)行過程中才動(dòng)態(tài)地確定操作所針對(duì)的對(duì)象,又稱為運(yùn)行時(shí)的多態(tài)性 動(dòng)態(tài)多態(tài)性是通過虛函數(shù)來實(shí)現(xiàn)的 四、虛函數(shù)的使用方法 當(dāng)一個(gè)成員函數(shù)被聲明為虛函數(shù)后,其派生類的同名函數(shù)都自動(dòng)成為虛函數(shù),因此在派生類中重新聲明該虛函數(shù)時(shí),可以加virtual,也可以不加virtual 定義一個(gè)指向基類的指針,并使它指向同一類族中的某一對(duì)象,通過該指針變量調(diào)用此虛函數(shù),此時(shí)調(diào)用的就是指針變量指向?qū)ο蟮耐瘮?shù) 一個(gè)成員函數(shù)被聲明為虛函數(shù)后,在同一個(gè)類中就不能再定義一個(gè)非virtual的但與該虛函數(shù)具有相同參數(shù)和返回值的同名函數(shù) 虛函數(shù)的使用是通過動(dòng)態(tài)關(guān)聯(lián)實(shí)現(xiàn)的 五、在什么情況下使用虛函數(shù) 首先看成員函數(shù)所在的類是否會(huì)作為基類,然后看成員函數(shù)在類的繼承后有無可能被更改功能,如果希望更改功能,一般應(yīng)將它聲明為虛函數(shù) 如果成員函數(shù)在類被繼承后功能不需修改或派生類用不到該函數(shù),則不要把它聲明成虛函數(shù) 應(yīng)考慮對(duì)成員函數(shù)的調(diào)用是通過對(duì)象名還是通過基類指針或引用去訪問,如果是通過基類指針或引用去訪問的,應(yīng)當(dāng)聲明為虛函數(shù)
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注