//演示一下c++如何找到虛表地址vptr以及如何通過虛表調(diào)用虛函數(shù)
#include <iostream>
using namespace std;
class CTest
{
public:
CTest(){}
virtual void Print(){cout<<"hello world"<<endl;}
};
int main()
{
CTest a;
CTest b;
//*p1,*p2存儲的是虛表的地址vptr
//根據(jù)<<Inside the c++ object mode>>第一章虛表的第一項是typeinfo,第二項應(yīng)該是第一個虛函數(shù)Add()持际。
//但vc++2010這里第一項就是Add()
int* p1 = (int*)&a;
printf("vptr=%p\n", *p1);
int* p2 = (int*)&b;
printf("vptr=%p\n", *p2);
int* vptr = (int*)(*p2);
//通過虛表直接調(diào)用Add
typedef void(*FUNC)();
//這里參數(shù)不太確定眶痰,參數(shù)為void也是可以的
typedef void(*FUNC2)(CTest*);
FUNC pf = (FUNC)vptr[0];
//書中說函數(shù)在虛表里會被改為void func(CTest*)
FUNC2 pf2 = (FUNC2)pf;
pf2(&a);
cin.get();
return 0;
}
c++虛表的使用 通過虛表調(diào)用虛函數(shù)的演示代碼
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門动分,熙熙樓的掌柜王于貴愁眉苦臉地迎上來毅糟,“玉大人,你說我怎么就攤上這事澜公∧妨恚” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵坟乾,是天一觀的道長迹辐。 經(jīng)常有香客問我,道長甚侣,這世上最難降的妖魔是什么明吩? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮殷费,結(jié)果婚禮上印荔,老公的妹妹穿的比我還像新娘。我一直安慰自己详羡,他們只是感情好仍律,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著殷绍,像睡著了一般染苛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上主到,一...
- 文/蒼蘭香墨 我猛地睜開眼姿锭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了伯铣?” 一聲冷哼從身側(cè)響起呻此,我...
- 正文 年R本政府宣布炒辉,位于F島的核電站锤灿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏辆脸。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一螃诅、第九天 我趴在偏房一處隱蔽的房頂上張望啡氢。 院中可真熱鬧,春花似錦术裸、人聲如沸倘是。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽搀崭。三九已至,卻和暖如春猾编,著一層夾襖步出監(jiān)牢的瞬間瘤睹,已是汗流浹背。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 干貨要點: 1辜贵、敘述、描寫和說明是三種記“實”的能力归形。 2托慨、議論和抒情是兩種寫“虛”的能力。 3暇榴、根據(jù)表達(dá)的中心厚棵,...
- 實驗: 以readdir為例 //readdir()返回參數(shù)dir目錄流的下個目錄進(jìn)入點蔼紧。結(jié)構(gòu)dirent定義如下...
- 上周跟老板談完畢業(yè)的一些事箭阶,他問我下一步打算干什么戈鲁。我說打算回國修理和維護MOCVD嘹叫。關(guān)于這個想法算是開玩笑,不過...