這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)怎樣通過(guò)函數(shù)實(shí)現(xiàn)C++多態(tài)性,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
定州網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,定州網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為定州上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的定州做網(wǎng)站的公司定做!
C++多態(tài)性主要體現(xiàn)在虛函數(shù)的調(diào)用,在C++中,虛函數(shù)的調(diào)用使用的是動(dòng)態(tài)綁定,也有人說(shuō)是晚捆綁,也就是在程序運(yùn)行時(shí)才決定調(diào)用的函數(shù),即使程序員不知道對(duì)象類型,程序仍然可以作出適合該對(duì)象類型的行為。
簡(jiǎn)單的說(shuō),虛函數(shù)就是在函數(shù)原型前加上virtual關(guān)鍵字。函數(shù)一旦被聲明為虛函數(shù),即使類在改寫(xiě)它的時(shí)候沒(méi)有將其聲明為虛函數(shù),它從該點(diǎn)的繼承層次結(jié)構(gòu)中仍然是虛函數(shù)。如果基類中一個(gè)函數(shù)被聲明為虛函數(shù),在若干子類中有著不同的實(shí)現(xiàn),那么我們?cè)趧?chuàng)建若干子類的不同對(duì)象時(shí),可以用基類的指針或者引用來(lái)指明子類對(duì)象并且調(diào)用相應(yīng)子類的函數(shù)。
虛函數(shù)的定義方式如下:
◆類的靜態(tài)成員函數(shù)不可以定義為虛函數(shù);
◆類的構(gòu)造函數(shù)不可以定義為虛函數(shù);
◆非類的函數(shù)不可以定義為虛函數(shù)。
純虛函數(shù)是在聲明虛函數(shù)時(shí)初始化為0的函數(shù)。
#include<memory> #include<iostream> using namespace std; Virtual void print() const = 0;
抽象類
簡(jiǎn)單的說(shuō),帶有一個(gè)或多個(gè)未實(shí)現(xiàn)的純虛函數(shù)的類是抽象類。如果一個(gè)類繼承自一個(gè)抽象類,但它沒(méi)有全部實(shí)現(xiàn)父類里面所有的純虛函數(shù),那么那些純虛函數(shù)在子類中仍然是純虛的,這個(gè)子類仍然是抽象類,仍然不能實(shí)例化對(duì)象。
抽象類是一種特殊的類,只能作為基類來(lái)使用,其純函數(shù)的實(shí)現(xiàn)由派生類給出。雖然不能實(shí)例化抽象類,但我們可以聲明一個(gè)抽象類的指針和引用,在實(shí)例化對(duì)象時(shí),可以用不同的子類來(lái)實(shí)現(xiàn),從而實(shí)現(xiàn)多態(tài)性操作。只有當(dāng)派生類將基類中的所有的純虛函數(shù)都實(shí)現(xiàn)的時(shí)候,它才不再是抽象類。
C++多態(tài)性
從廣義上說(shuō),C++多態(tài)性是指一段程序能夠處理多種類型對(duì)象的能力。在C++語(yǔ)言中,多態(tài)性可以通過(guò)強(qiáng)制多態(tài)、重載多態(tài)、類型參數(shù)化多態(tài)、包含多態(tài)等多種實(shí)現(xiàn)形式。所謂多態(tài)就是通過(guò)類的繼承,使得同一個(gè)函數(shù)可以根據(jù)調(diào)用他的對(duì)象的類型作出不同的響應(yīng)。它也繼承和重載共同構(gòu)成面向?qū)ο蟮?大編程特性。
C++多態(tài)性通過(guò)虛函數(shù)來(lái)實(shí)現(xiàn),當(dāng)我們用基類的指針來(lái)調(diào)用虛函數(shù)時(shí),程序會(huì)根據(jù)對(duì)象的屬性選擇其自身的函數(shù)實(shí)現(xiàn)。即使程序員不知道對(duì)象類型,程序仍然可以作出適合該對(duì)象類型的行為。
C++語(yǔ)言支持兩種類型的多態(tài):一種是編譯時(shí)的多態(tài)(靜態(tài)多態(tài)),另一種是運(yùn)行時(shí)的多態(tài)(動(dòng)態(tài)多態(tài))。在編譯時(shí)的多態(tài)是通過(guò)靜態(tài)聯(lián)編實(shí)現(xiàn)的,而在運(yùn)行時(shí)的多態(tài)則是通過(guò)動(dòng)態(tài)聯(lián)編實(shí)現(xiàn)的。
上述就是小編為大家分享的怎樣通過(guò)函數(shù)實(shí)現(xiàn)C++多態(tài)性了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁(yè)標(biāo)題:怎樣通過(guò)函數(shù)實(shí)現(xiàn)C++多態(tài)性
分享鏈接:http://jinyejixie.com/article44/peodhe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、小程序開(kāi)發(fā)、App開(kāi)發(fā)、網(wǎng)站策劃、網(wǎng)站制作、定制開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)