他の通常の関数ポインタ、ポインタへのVtableほか

書式#include <iostreamの> 使用して名前空間はstdを、クラスベース{
 パブリック
    ベース(){ 
        COUT << " ベースで " << ENDL。
        裁判所未満<< " 仮想ポインタ= " <<(int型 *)この <<てendl; 
        裁判所未満<< " のVtable =の住所 <<(" int型 *)*(int型 *)この <<てendl; 
        裁判所未満<<「のVtable第一項目で値=」<<

 

のVtable第二のエントリで値= " <<(int型 *)*((int型 *)*(int型 *)これは +1)<<てendl; 
        裁判所未満<< " のVtable第三のエントリで値= " <<(int型 *)*((int型 *)*(int型 *)これは +2)<<てendl; 
coutの<<てendl; 
    } 仮想ボイド F1(){COUT << " ベース:: F1 " << ENDL。}
     仮想ボイド F2(){COUT << " ベース:: F2 " << ENDL。} 
}。クラスドライブ:
      


    ドライブ(){ 
        COUT << " ドライブで " << ENDL。
        裁判所未満<< " 仮想ポインタ= " <<(int型 *)この <<てendl; 
        裁判所未満<< " のVtable =の住所 <<(" int型 *)*(int型 *)この <<てendl; 
        裁判所未満<< " のVtable第一項目で値= " <<(int型 *)*((int型 *)*(int型 *)この 0)<<てendl; 
        裁判所未満<<「バリューのVtableで第二のエントリ=」<<*)この +1)<<てendl; 
        裁判所未満<< " のVtable第三のエントリで値= " <<(int型 *)*((int型 *)*(int型 *)これは +2)<<てendl; 
        coutの<<てendl; 
    } 仮想ボイド F1(){COUT << " ドライブ:: F1 " << ENDL。} 
}。INTメイン(){ 
    ドライブD。リターン 0; 
}
     


    
 
業績
ベースで
仮想ポインタ= 0012FF7Cの
のVtable = 0046C0E0のアドレス
のVtable第一項目で値= 004010F0 のVtable第三のエントリで値= 00000000 
ドライブに
仮想ポインタ= 0012FF7Cの
のVtable = 0046C0C8のアドレス
のVtable第一項目で値= 0040121Cの
のVtable第三のエントリで値= 00000000



ます。https://www.cnblogs.com/fanzi2009/archive/2009/09/11/1564935.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_33901641/article/details/94192623