c++學(xué)習(xí)筆記(15)——靜態(tài)綁定與動態(tài)綁定

c++學(xué)習(xí)筆記(15)——靜態(tài)綁定與動態(tài)綁定

ID:15398154

大?。?2.00 KB

頁數(shù):3頁

時間:2018-08-03

c++學(xué)習(xí)筆記(15)——靜態(tài)綁定與動態(tài)綁定_第1頁
c++學(xué)習(xí)筆記(15)——靜態(tài)綁定與動態(tài)綁定_第2頁
c++學(xué)習(xí)筆記(15)——靜態(tài)綁定與動態(tài)綁定_第3頁
資源描述:

《c++學(xué)習(xí)筆記(15)——靜態(tài)綁定與動態(tài)綁定》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、C++學(xué)習(xí)筆記(15)——靜態(tài)綁定與動態(tài)綁定???????????????????????靜態(tài)綁定:編譯時綁定,通過對象調(diào)用動態(tài)綁定:運行時綁定,通過地址實現(xiàn)????????????????????????C++的多態(tài)性????????????????????????靜態(tài)多態(tài)性:函數(shù)多態(tài)性——函數(shù)重載?????????????????????????模板多態(tài)性——C++模板(類模板、函數(shù)模板)?動態(tài)多態(tài)性:虛函數(shù)(只有用地址才能實現(xiàn)動態(tài)多態(tài)性)????????????????????????只有采用“指針

2、->函數(shù)()”或“引用變量.函數(shù)()”的方式調(diào)用C++類中的虛函數(shù)才會執(zhí)行動態(tài)綁定。對于C++中的非虛函數(shù),因為其不具備動態(tài)綁定的特征,所以不管采用什么樣的方式調(diào)用,都不會執(zhí)行動態(tài)綁定。??????????????????C++語言成員函數(shù)的調(diào)用和綁定方式總結(jié)代碼形式對于虛函數(shù)對于非虛函數(shù)作用綁定方式作用綁定方式類名::函數(shù)()調(diào)用指定類的指定函數(shù)靜態(tài)綁定調(diào)用指定類的指定函數(shù)靜態(tài)綁定對象名.函數(shù)()調(diào)用指定對象的指定函數(shù)靜態(tài)綁定調(diào)用指定對象的指定函數(shù)靜態(tài)綁定引用變量.函數(shù)()調(diào)用被引用對象所屬類的指定函數(shù)

3、動態(tài)綁定調(diào)用引用變量所屬類的指定函數(shù)靜態(tài)綁定指針->函數(shù)()調(diào)用被引用對象所屬類的指定函數(shù)動態(tài)綁定調(diào)用指針變量所屬類的指定函數(shù)靜態(tài)綁定????????????????????????????注:被引用對象所屬類是指針或引用指向的對象的實際類型;引用變量所屬類、指針變量所屬類是定義引用變量、指針變量的類型;以上兩種類型可能相同,也可能不同。????????????????????????從上表可以看出,執(zhí)行動態(tài)綁定的只有通過地址,即只有通過指針或引用變量才能實現(xiàn),而且還必須是虛函數(shù)。從概念上來說,虛函數(shù)機制

4、只有在應(yīng)用于地址時才有效,因為地址在編譯階段提供的類型信息不完全。??????????????????????????????例:編寫程序觀察虛函數(shù)和非虛函數(shù)的綁定行為:??????????????????????????代碼如下:?????????????/**//*************************************************************************?動態(tài)綁定與靜態(tài)綁定**************************************

5、**********************************/#include?class?CBase...{public:????virtual?int?func()?const????//虛函數(shù)????...{????????cout<<"CBase?function!";????????return?100;????}};class?CDerive?:?public?CBase...{public:????int?func()?const????????//在派生類中

6、重新定義虛函數(shù)????...{????????cout<<"CDerive?function!";????????return?200;????}};void?main()...{????CDerive?obj1;????CBase*?p1=&obj1;????CBase&?p2=obj1;????CBase?obj2;????obj1.func();????//靜態(tài)綁定:調(diào)用對象本身(派生類CDerive對象)的?func?函數(shù)????p1->func();????//動態(tài)綁定:調(diào)用被引用對象所屬類(派

7、生類CDerive)的?func?函數(shù)????p2.func();????//動態(tài)綁定:調(diào)用被引用對象所屬類(派生類CDerive)的?func?函數(shù)????obj2.func();????//靜態(tài)綁定:調(diào)用對象本身(基類CBase對象)的函數(shù)}???????????????????????????運行結(jié)果:

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。