多態(tài):指同一個(gè)實(shí)體同時(shí)具有多種形式,即一個(gè)名字可以具有多種語(yǔ)義。函數(shù)重載、類(lèi)模板、函數(shù)模板等都屬于多態(tài)性。通俗來(lái)說(shuō)就是接口的多種不同實(shí)現(xiàn)方式。
成都創(chuàng)新互聯(lián)是一家專(zhuān)注于成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),長(zhǎng)春網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:長(zhǎng)春等地區(qū)。長(zhǎng)春做網(wǎng)站價(jià)格咨詢(xún):18982081108函數(shù)綁定:就是函數(shù)的入口地址同函數(shù)調(diào)用相聯(lián)系的過(guò)程。
分為靜態(tài)綁定和動(dòng)態(tài)綁定。
兩者的區(qū)別:靜態(tài)綁定在程序執(zhí)行前完成,由編譯系統(tǒng)或操作系統(tǒng)裝入程序計(jì)算函數(shù)的入口地址;而動(dòng)態(tài)綁定則在執(zhí)行過(guò)程中完成,由程序自身計(jì)算函數(shù)的入口地址。
靜態(tài)綁定:在編譯階段決定執(zhí)行哪個(gè)同名的被調(diào)用函數(shù)。
//靜態(tài)綁定 #include#include using namespace std; class student { public: void calfee() { _fee1 = 1000; } void print() { cout<<_fee1< 動(dòng)態(tài)綁定:是由編譯系統(tǒng)自動(dòng)生成的、靜態(tài)或動(dòng)態(tài)連接的、程序自身激活并執(zhí)行的過(guò)程。在編譯階段不能決定執(zhí)行哪個(gè)同名被調(diào)用函數(shù),只在執(zhí)行階段才能依據(jù)要處理的對(duì)象類(lèi)型來(lái)決定執(zhí)行哪個(gè)類(lèi)的成員函數(shù)。
所以要實(shí)現(xiàn)動(dòng)態(tài)綁定需要用到虛函數(shù),虛函數(shù)是動(dòng)態(tài)綁定的基礎(chǔ)。
//動(dòng)態(tài)綁定 #include#include using namespace std; class student { public: virtual void calfee() { _fee1 = 1000; } virtual void print() { cout<<_fee1< 下面分析一下虛函數(shù)
虛函數(shù):也是類(lèi)的一種成員函數(shù),并且不能是靜態(tài)成員函數(shù)。
虛函數(shù)的作用是實(shí)現(xiàn)動(dòng)態(tài)綁定,也就是在程序的運(yùn)行階段動(dòng)態(tài)的選擇合適的成員函數(shù)。從而實(shí)現(xiàn)多態(tài)性
設(shè)置虛函數(shù)的一寫(xiě)注意事項(xiàng):
1、只有類(lèi)的成員函數(shù)才能聲明為虛函數(shù)。因?yàn)樘摵瘮?shù)只適用于有繼承關(guān)系的類(lèi)對(duì)象,所以普通函數(shù)不能聲明為虛函數(shù)。
2、靜態(tài)成員不能是虛函數(shù),因?yàn)殪o態(tài)成員不受限于某個(gè)對(duì)象。
3、內(nèi)聯(lián)函數(shù)不能是虛函數(shù),因?yàn)閮?nèi)聯(lián)函數(shù)不能在運(yùn)行中歐諾個(gè)動(dòng)態(tài)的確定其位置。即使虛函數(shù)在類(lèi)的內(nèi)部定義,編譯時(shí)仍將其看做是非內(nèi)聯(lián)的。
4、構(gòu)造函數(shù)不能是虛函數(shù),因?yàn)闃?gòu)造時(shí)對(duì)象還是一片未定型的空間。只有在構(gòu)造完成后,對(duì)象才能成為一個(gè)類(lèi)的名副其實(shí)的實(shí)例。
5、析構(gòu)函數(shù)可以是虛函數(shù),而且通常聲明為虛函數(shù)。目的在于:使用delete刪除一個(gè)對(duì)象時(shí),確保析構(gòu)函數(shù)能夠被正確運(yùn)行。因?yàn)樵O(shè)置虛析構(gòu)函數(shù)后,可以利用動(dòng)態(tài)綁定方式選擇析構(gòu)函數(shù)。
下面程序演示了析構(gòu)函數(shù)在有些情況下必須設(shè)置為虛函數(shù)
class A { public: A() { cout<<"A()"<純虛函數(shù):無(wú)函數(shù)體的一種特殊的虛函數(shù)。
其聲明的格式為:virtual 類(lèi)型 函數(shù)名(參數(shù)表)= 0;
抽象類(lèi):至少有一個(gè)純虛函數(shù)的類(lèi)。
作用:將有關(guān)類(lèi)組織在一個(gè)繼承層次結(jié)構(gòu)中,由它提供一個(gè)公共的根,相關(guān)的子類(lèi)都是從這個(gè)根派生出來(lái)的。
抽象類(lèi)的使用規(guī)定:
1、抽象類(lèi)只能用作其他類(lèi)的基類(lèi),不能建立抽象類(lèi)對(duì)象。
2、抽象類(lèi)不能用作參數(shù)類(lèi)型、函數(shù)返回類(lèi)型或顯示轉(zhuǎn)換類(lèi)型
3、可以定義抽象類(lèi)的指針和引用,此指針可以指向它的派生類(lèi),從而實(shí)現(xiàn)多態(tài)。
class A //抽象類(lèi) { public: A() { cout<<"A()"<fun(); arr[1] = &c; arr[1]->fun(); system("pause"); return 0; } 創(chuàng)新互聯(lián)www.cdcxhl.cn,專(zhuān)業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買(mǎi)多久送多久。
網(wǎng)站標(biāo)題:淺談c++靜態(tài)綁定、動(dòng)態(tài)綁定-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)地址:http://weahome.cn/article/dhhoee.html