時(shí)間:2023-03-26 13:06:01 | 來源:營(yíng)銷百科
時(shí)間:2023-03-26 13:06:01 來源:營(yíng)銷百科
虛擬函數(shù)虛擬函數(shù)的動(dòng)態(tài)綁定:虛擬函數(shù)的'動(dòng)態(tài)綁定'特性雖然很好,但也有其內(nèi)在的空間以及時(shí)間開銷,每個(gè)支持虛擬函數(shù)的類(基類或派生類)都會(huì)有一個(gè)包含其所有支持的虛擬函數(shù)指針的'虛擬函數(shù)表'(virtual table)。另外每個(gè)該類生成的對(duì)象都會(huì)隱含一個(gè)'虛擬函數(shù)指針'(virtual pointer),此指針指向其所屬類的'虛擬函數(shù)表'。當(dāng)通過基類的指針或者引用調(diào)用某個(gè)虛擬函數(shù)時(shí),系統(tǒng)需要首先定位這個(gè)指針或引用真正對(duì)應(yīng)的'對(duì)象'所隱含的虛擬函數(shù)指針。'虛擬函數(shù)指針',然后根據(jù)這個(gè)虛擬函數(shù)的名稱,對(duì)這個(gè)虛擬函數(shù)指針?biāo)赶虻奶摂M函數(shù)表進(jìn)行一個(gè)偏移定位,再調(diào)用這個(gè)偏移定位處的函數(shù)指針對(duì)應(yīng)的虛擬函數(shù),這就是'動(dòng)態(tài)綁定'的解析過程(當(dāng)然C 規(guī)范只需要編譯器能夠保證動(dòng)態(tài)綁定的語義即可,但是絕大多數(shù)的C 編譯器都是用這種方式實(shí)現(xiàn)虛擬函數(shù)的),通過分析,不難發(fā)現(xiàn)虛擬函數(shù)的開銷:關(guān)鍵詞:虛擬,函數(shù),動(dòng)態(tài)
客戶&案例
營(yíng)銷資訊
關(guān)于我們
客戶&案例
營(yíng)銷資訊
關(guān)于我們
微信公眾號(hào)
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。