最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何獲取C++類成員虛函數(shù)地址的示例代碼

 更新時(shí)間:2017年08月17日 08:54:54   作者:Dablelv  
這篇文章主要給大家介紹了關(guān)于C++如何獲取類成員虛函數(shù)地址的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

本文主要給大家介紹了關(guān)于如何獲取C++類成員虛函數(shù)地址的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),話不多說了,來一起看看詳細(xì)的介紹:

1.GCC平臺(tái)

GCC平臺(tái)獲取C++成員虛函數(shù)地址可使用如下方法[1]:

class Base{
 int i;
public:
 virtual void f1(){
  cout<<"Base's f1()"<<endl;
 }
};

Base b;
void (Base::*mfp)() = &Base::f1;
printf("address: %p", (void*)(b->*mfp));

上面的代碼在Linux g++ (GCC) 4.8.5中編譯通過。

2.Visual C++平臺(tái)

可以采用內(nèi)聯(lián)匯編的方式獲取[2],代碼如下:

#define ShowFuncAddress(function) _asm{\
 mov eax, function}\
 _asm{mov p,eax}\
 cout<<"Address of "#function": "<<p<<endl;

//使用示例
ShowFuncAddress(Base::f1);

上面的代碼在VS2015中編譯通過。

3.通過訪問虛函數(shù)表獲取虛函數(shù)地址

下面的代碼可以在GCC和Visual C++共同編譯運(yùn)行。

/**********************
@className:類名稱
@pObj:類對(duì)象地址
@index:虛函數(shù)表項(xiàng)(從0開始)
**********************/
void showVtableContent(char* className, void* pObj, int index){
 unsigned long* pAddr=NULL;
 pAddr=reinterpret_cast<unsigned long*>(pObj);
 pAddr=(unsigned long*)*pAddr;  //獲取虛函數(shù)表指針
 cout<<className<<"'s vtable["<<index<<"]";
 cout<<": 0x"<<(void*)pAddr[index]<<endl;
}

//使用示例:
class Base{
 int i;
public:
 virtual void f1(){
  cout<<"Base's f1()"<<endl;
 }
 virtual void f2(){
  cout<<"Base's f2()"<<endl;
 }
};

Base b;
showVtableContent("Base",&b,0); //輸出第一個(gè)虛函數(shù)Base::f1的地址
showVtableContent("Base",&b,1); //輸出第二個(gè)虛函數(shù)Base::f2的地址

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

參考文獻(xiàn)

[1]print address of virtual member function

[2]動(dòng)態(tài)聯(lián)編實(shí)現(xiàn)原理分析

相關(guān)文章

  • windows下在vim中搭建c語(yǔ)言開發(fā)環(huán)境的詳細(xì)過程

    windows下在vim中搭建c語(yǔ)言開發(fā)環(huán)境的詳細(xì)過程

    這篇文章主要介紹了windows下在vim中搭建c語(yǔ)言開發(fā)環(huán)境,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • 詳解C語(yǔ)言常用的一些轉(zhuǎn)換工具函數(shù)

    詳解C語(yǔ)言常用的一些轉(zhuǎn)換工具函數(shù)

    這篇文章主要介紹了C語(yǔ)言常用的一些轉(zhuǎn)換工具函數(shù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • C語(yǔ)言刷題判斷鏈表中是否有環(huán)題解

    C語(yǔ)言刷題判斷鏈表中是否有環(huán)題解

    這篇文章主要為大家介紹了C語(yǔ)言刷題判斷鏈表中是否有環(huán)題解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • C++之BOOST字符串查找示例

    C++之BOOST字符串查找示例

    這篇文章主要介紹了C++之BOOST字符串查找的方法,實(shí)例演示了boost針對(duì)字符串的查找、判定及替換等操作,具有一定的實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • C語(yǔ)言實(shí)現(xiàn)三子棋游戲

    C語(yǔ)言實(shí)現(xiàn)三子棋游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)三子棋游戲的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C語(yǔ)言實(shí)現(xiàn)一個(gè)多線程委托模型的示例詳解

    C語(yǔ)言實(shí)現(xiàn)一個(gè)多線程委托模型的示例詳解

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)一個(gè)多線程委托模型,這就是一個(gè)使用C語(yǔ)言實(shí)現(xiàn)多線程委托模型的例子,其中包含boss線程和worker線程,可以處理工作線程的異常情況,需要的朋友可以參考下
    2023-06-06
  • 詳解利用C語(yǔ)言如何實(shí)現(xiàn)簡(jiǎn)單的內(nèi)存池

    詳解利用C語(yǔ)言如何實(shí)現(xiàn)簡(jiǎn)單的內(nèi)存池

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言如何實(shí)現(xiàn)簡(jiǎn)單的內(nèi)存池的相關(guān)資料,設(shè)計(jì)內(nèi)存池的目標(biāo)是為了保證服務(wù)器長(zhǎng)時(shí)間高效的運(yùn)行,通過對(duì)申請(qǐng)空間小而申請(qǐng)頻繁的對(duì)象進(jìn)行有效管理,減少內(nèi)存碎片的產(chǎn)生,合理分配管理用戶內(nèi)存,需要的朋友可以參考下
    2021-08-08
  • 基于Matlab實(shí)現(xiàn)野狗優(yōu)化算法的示例代碼

    基于Matlab實(shí)現(xiàn)野狗優(yōu)化算法的示例代碼

    野狗優(yōu)化算法(Dingo?Optimization?Algorithm,?DOA)模仿澳大利亞野狗的社交行為。DOA算法的靈感來源于野狗的狩獵策略,即迫害攻擊、分組策略和食腐行為。本文將通過Matlab實(shí)現(xiàn)這一算法,感興趣的可以了解一下
    2022-04-04
  • C語(yǔ)言 深入淺出講解指針的使用

    C語(yǔ)言 深入淺出講解指針的使用

    指針是C語(yǔ)言中一個(gè)非常重要的概念,也是C語(yǔ)言的特色之一。使用指針可以對(duì)復(fù)雜數(shù)據(jù)進(jìn)行處理,能對(duì)計(jì)算機(jī)的內(nèi)存分配進(jìn)行控制,在函數(shù)調(diào)用中使用指針還可以返回多個(gè)值
    2022-03-03
  • C語(yǔ)言編程入門之程序頭文件的簡(jiǎn)要解析

    C語(yǔ)言編程入門之程序頭文件的簡(jiǎn)要解析

    這篇文章主要介紹了C語(yǔ)言編程入門之程序頭文件的簡(jiǎn)要解析,包括頭文件重復(fù)包含問題等方面的說明,需要的朋友可以參考下
    2015-12-12

最新評(píng)論

育儿| 万州区| 图片| 丹寨县| 潮州市| 丁青县| 杭州市| 武夷山市| 随州市| 桂阳县| 麻城市| 江永县| 连城县| 德兴市| 凤凰县| 江油市| 栖霞市| 龙井市| 绥中县| 康马县| 阆中市| 岱山县| 关岭| 香格里拉县| 宁河县| 通海县| 凤凰县| 宣化县| 龙陵县| 高邑县| 桃源县| 尖扎县| 固原市| 鸡东县| 长寿区| 东乌珠穆沁旗| 玛纳斯县| 开平市| 哈密市| 华安县| 大埔县|