亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c++虛函數問題

c++虛函數問題

C++
三國紛爭 2018-07-05 06:06:23
今天看《深度探索c++對象模型》上說, 編譯器會把虛函數調用語句“p->func()”轉化為“*(p->vptr[index])(p)”;index是偏移量,因為虛函數表中可能有多個虛函數地址。那是不是說:虛函數的調用和普通函數相比其實就多了尋址去vtable表中取得函數入口地址這一步?
查看完整描述

1 回答

?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

兩者的調用模型不一樣,非虛函數的地址是固定的,對它的調用直接被編譯為CALL 固定地址的匯編代碼;虛函數的調用則是要經過找到對象中的vptr指針,通過指針找到類的vtable表,結合偏移量找到表中要調用的函數地址,最終再CALL 該地址這么幾個步驟。

查看完整回答
反對 回復 2018-07-31
  • 1 回答
  • 0 關注
  • 691 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號