-
實(shí)例化子類時(shí),也會(huì)有虛函數(shù)指針列表,如果仍然使用繼承自父類的方法,則入口函數(shù)地址和父類的相同
如果子類中重新定義了虛函數(shù)的方法,子類的虛函數(shù)表中指向的函數(shù)入口地址是自己定義的而不是父類的,相當(dāng)于覆蓋了父類的方法
父類指針指向子類對(duì)象 ,則通過(guò)子類對(duì)象的虛函數(shù)指針找到虛函數(shù)表,與父類同樣多的偏移量,找到子類對(duì)象的函數(shù)入口
查看全部 -
虛函數(shù)表指針
定義了virtual函數(shù),實(shí)例化一個(gè)基類對(duì)象時(shí),實(shí)例對(duì)象中存儲(chǔ)了成員變量和虛函數(shù)表指針。
虛函數(shù)指針指向一個(gè)虛函數(shù)表,虛函數(shù)表也占一定的空間,通過(guò)基類實(shí)例化的所有實(shí)例都共用一個(gè)虛函數(shù)表。
虛函數(shù)表存儲(chǔ)函數(shù)指針,存儲(chǔ)入口函數(shù)地址。
調(diào)用時(shí)候,先找到虛函數(shù)指針,再找到虛函數(shù)表,通過(guò)相應(yīng)的偏移找到虛函數(shù)入口地址再找到相應(yīng)的執(zhí)行函數(shù)
查看全部 -
指針指向?qū)ο?-對(duì)象指針指著指向函數(shù)--函數(shù)指針。函數(shù)的本質(zhì):一部分二進(jìn)制代碼,寫(xiě)在內(nèi)存中;與變量指針類似,都是由4個(gè)基本內(nèi)存單元組成,存儲(chǔ)一個(gè)地址;函數(shù)指針指向函數(shù)開(kāi)頭,順序執(zhí)行完,指針指向函數(shù)結(jié)尾,并通過(guò)指令返回值;執(zhí)行某個(gè)函數(shù),獲取指針地址,執(zhí)行入口函數(shù),再返回相應(yīng)的值。
查看全部 -
Vitrual 使用限制4
不能修飾構(gòu)造函數(shù)
會(huì)造成編譯錯(cuò)誤
查看全部 -
virtual使用限制3
不能修飾內(nèi)聯(lián)函數(shù)
造成忽略inline,變成了虛函數(shù)
查看全部 -
Virtual使用限制2
不能修飾靜態(tài)成員函數(shù)
靜態(tài)成員函數(shù)和類同時(shí)共存的
查看全部 -
virtual 使用限制1
不能是全局函數(shù),必須是某個(gè)類的成員函數(shù)
查看全部 -
借助父類指針?shù)N毀子類對(duì)象時(shí),只執(zhí)行父類的析構(gòu)函數(shù),造成內(nèi)存泄漏
查看全部 -
動(dòng)態(tài)多態(tài)
派生類中多定義了數(shù)據(jù)成員,派生類構(gòu)造函數(shù)中實(shí)例化了那個(gè)數(shù)據(jù)成員,分配了內(nèi)存空間, 在析構(gòu)函數(shù)中釋放了空間
查看全部 -
頭文件中定義過(guò)了類
此文件中定義了類對(duì)象的成員方法的具體實(shí)現(xiàn)
查看全部 -
定義宏定義,避免重復(fù)定義
查看全部 -
靜態(tài)多態(tài)(早綁定):
程序在編譯階段就確定了調(diào)用哪個(gè)函數(shù)執(zhí)行
動(dòng)態(tài)多態(tài)(晚綁定):
如果不定義virtual 調(diào)用的都是父類的方法
可在父類實(shí)現(xiàn)多態(tài)函數(shù)的成員函數(shù)前添加修飾詞virtual, 使其成為虛函數(shù),子類成員函數(shù)也可加上virtual,但不是必要的。
查看全部 -
什么是多態(tài)
查看全部 -
面向?qū)ο笕筇卣?/p>
查看全部 -
重載 1 相同范圍 2 函數(shù)名相同 3 參數(shù)不同 4 virtual可有可無(wú) 覆蓋 1 父類子類 2 函數(shù)名相同 3 參數(shù)相同 4 基類必須有virtual關(guān)鍵字 隱藏 1 父類子類 2 無(wú)virtual 3 函數(shù)名相同 4 參數(shù)可同可不同查看全部
舉報(bào)