国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營(yíng)銷資訊 > 營(yíng)銷百科 > 虛擬函數(shù)虛擬函數(shù)的動(dòng)態(tài)綁定

虛擬函數(shù)虛擬函數(shù)的動(dòng)態(tài)綁定

時(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ù)的開銷:

—空間:每個(gè)支持虛擬函數(shù)的類,都有一個(gè)虛擬函數(shù)表,這個(gè)虛擬函數(shù)表的大小跟該類擁有的虛擬函數(shù)的多少成正比,此虛擬函數(shù)表對(duì)一個(gè)類來說,整個(gè)程序只有一個(gè),而無論該類生成的對(duì)象在程序運(yùn)行時(shí)會(huì)生成多少個(gè)。

— 空間:通過支持虛擬函數(shù)的類生成的每個(gè)對(duì)象都有一個(gè)指向該類對(duì)應(yīng)的虛擬函數(shù)表的虛擬函數(shù)指針,無論該類的虛擬函數(shù)有多少個(gè),都只有一個(gè)函數(shù)指針,但是因?yàn)榕c對(duì)象綁定,因此程序運(yùn)行時(shí)因?yàn)樘摂M函數(shù)指針引起空間開銷跟生成的對(duì)象個(gè)數(shù)成正比。

— 時(shí)間:通過支持虛擬函數(shù)的類生成的每個(gè)對(duì)象,當(dāng)其生成時(shí),在構(gòu)造函數(shù)中會(huì)調(diào)用編譯器在構(gòu)造函數(shù)內(nèi)部插入的初始化代碼,來初始化其虛擬函數(shù)指針,使其指向正確的虛擬函數(shù)表。

— 時(shí)間:當(dāng)通過指針或者引用調(diào)用虛擬函數(shù)時(shí),跟普通函數(shù)調(diào)用相比,會(huì)多一個(gè)根據(jù)虛擬函數(shù)指針找到虛擬函數(shù)表的操作。

關(guān)鍵詞:虛擬,函數(shù),動(dòng)態(tài)

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉