關(guān)于推進(jìn)政府網(wǎng)站集約化建設(shè)的通知聊城seo
多態(tài)分為兩類(lèi)
靜態(tài)多態(tài):函數(shù)重載和運(yùn)算符重載屬于靜態(tài)多態(tài),復(fù)用函數(shù)名
動(dòng)態(tài)多態(tài):派生類(lèi)和虛函數(shù)實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)
靜態(tài)多態(tài)和動(dòng)態(tài)多態(tài)的區(qū)別:
靜態(tài)多態(tài)的函數(shù)地址早綁定——編譯階段確定函數(shù)地址
動(dòng)態(tài)多態(tài)的函數(shù)地址晚綁定——運(yùn)行階段確定函數(shù)地址
多態(tài)滿(mǎn)足條件:
1.有繼承關(guān)系
2.子類(lèi)重寫(xiě)父類(lèi)中的虛函數(shù)
多態(tài)使用條件:父類(lèi)指針或引用指向子類(lèi)對(duì)象
多態(tài)優(yōu)點(diǎn):代碼組織結(jié)構(gòu)清晰,可讀性強(qiáng),利于前期和后期的擴(kuò)展以及維護(hù)。
重寫(xiě):函數(shù)返回值類(lèi)型 函數(shù)名 參數(shù)列表完全一致稱(chēng)為重寫(xiě)
在多態(tài)中,通常父類(lèi)中虛函數(shù)的實(shí)現(xiàn)是毫無(wú)意義的,主要都是調(diào)用子類(lèi)重寫(xiě)的內(nèi)容,因此可以將虛函數(shù)改為純虛函數(shù)
純虛函數(shù)語(yǔ)法:virtual 返回值類(lèi)型 函數(shù)名(參數(shù)列表)=0;
當(dāng)類(lèi)中有了純虛函數(shù),這個(gè)類(lèi)也稱(chēng)為抽象類(lèi)。
抽象類(lèi)特點(diǎn):
1.無(wú)法實(shí)例化對(duì)象
2.子類(lèi)必須重寫(xiě)抽象類(lèi)中的純虛函數(shù),否則子類(lèi)也屬于抽象類(lèi)。
虛析構(gòu)和純虛析構(gòu):
多態(tài)使用時(shí),如果子類(lèi)中有屬性開(kāi)辟到堆區(qū),那么父類(lèi)指針在釋放時(shí)無(wú)法調(diào)用到子類(lèi)的析構(gòu)代碼
解決方式:將父類(lèi)中的析構(gòu)函數(shù)改為虛析構(gòu)或者純虛析構(gòu)
虛析構(gòu)和純虛析構(gòu)的共性:
1.可以解決父類(lèi)指針釋放子類(lèi)對(duì)象
2.都需要有具體的函數(shù)實(shí)現(xiàn)
虛析構(gòu)和純虛析構(gòu)的區(qū)別:如果是純虛析構(gòu),該類(lèi)屬于抽象類(lèi),無(wú)法實(shí)例化對(duì)象
虛析構(gòu)語(yǔ)法:virtual ~類(lèi)名(){}
純虛析構(gòu)語(yǔ)法:virtual ~類(lèi)名()=0; 類(lèi)名::~類(lèi)名(){}
總結(jié):
1.虛析構(gòu)或純虛析構(gòu)就是用來(lái)解決通過(guò)父類(lèi)指針釋放子類(lèi)對(duì)象
2.如果子類(lèi)中沒(méi)有堆區(qū)數(shù)據(jù),可以不寫(xiě)為虛析構(gòu)或純虛析構(gòu)
3.擁有純虛析構(gòu)函數(shù)的類(lèi)也屬于抽象類(lèi)