C對象模型詳解_第1頁
C對象模型詳解_第2頁
C對象模型詳解_第3頁
C對象模型詳解_第4頁
C對象模型詳解_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

何為C+#pragma#pragmaonceusingnamespacestd;classBasevirtualvirtualintgetIBase()const;staticintinstanceCount();virtualvoidprint()intstaticint基本C+表格驅動對象模型(atable-drivenobjectmodel)。簡單對象模型(asimpleobject表格對象模型(atable-drivenobject數(shù)據(jù)成員被放置到對象內部,staticstaticandnonstatic函數(shù)成員均被放到對象之type_infoRTTI(RunTimeType象本身的描述,RTTI使用的類的nonstaticvoidvoidBasecoutb1&b1<<cout"type_info((int*)*(int*)(&b1)1)endl;RTTICompleteObjectLocatorstr=*((RTTICompleteObjectLocator*)*((int*)*(int*)(&b1)-//abstractclassnamefromstringclassname(str.pTypeDescriptor-classname=classname.substr(4,classname.find("@@")-4);cout<<classname<<endl;cout<<"虛函數(shù)表地址:\t\t\t"<<(int*)(&b1)<<cout1:\t"<<(int*)*(int*)(&b1)<<"\t"<<(int*)*((int*)*(int*)(&b1))<<cout2:\t"((int*)*(int*)(&b1)1)"\t";typedefvoid(*Fun)(void);FunpFun=(Fun)*(((int*)*(int*)(&b1))+1);cout<<endl;coutiBase:\t\t"<<((int*)(&b1)"\tiBase*((int*)(&b1)+1)endl;cout<<"Base::getIBase():"<<b1.getIBase()<<endl;coutinstanceCountb1.instanceCountiBase1,((int*)(&b1下面是測試代碼輸出:(2)上面介紹并驗證了基本的C++對象模型,引入繼承之后,C++對象模型又是怎樣的?slotslot#pragmaonce#include#pragmaonce#include"base.h"classDerived:publicvirtualvirtualvoidintvoidvoidDerivedcoutd&d<<cout"type_info((int*)*(int*)(&d)1)endl;RTTICompleteObjectLocatorstr=*((RTTICompleteObjectLocator*)*((int*)*(int*)(&d)-//abstractclassnamefromstringclassname(str.pTypeDescriptor-classname=classname.substr(4,classname.find("@@")-4);cout<<classname<<endl;cout<<"虛函數(shù)表地址:\t\t\t"<<(int*)(&d)<<cout1:\t"(int*)*(int*)(&d)"\t"<<endl;cout2:\t"((int*)*(int*)(&d)1)"\t";typedefvoid(*Fun)(void);FunpFun=(Fun)*(((int*)*(int*)(&d))+1);cout<<endl;cout3:\t"((int*)*(int*)(&d)2)"\t";pFun=(Fun)*(((int*)*(int*)(&d))+2);cout<<endl;coutiBase:\t\t"<<((int*)(&d)<<"\t*((int*)(&d)+1)<<coutiDerived:\t"<<((int*)(&d)<<"\t*((int*)(&d)+2)<<#pragmaonce#include#pragmaonce#include"base.h"classDerived_Overrite:publicBasevirtual~Derived_Overrite(void);virtualvoidprint(void)const;intvoidvoidDerived_Overritecoutd:\t\t"<<&d<<endl;cout:\t\t\t"(int*)(&d)endl;cout1:\t"(int*)*(int*)(&d)"\t"<<endl;cout2:\t"((int*)*(int*)(&d)1)"\t";typedefvoid(*Fun)(void);FunpFun=(Fun)*(((int*)*(int*)(&d))+1);cout<<endl;cout3:\t"*((int*)*(int*)(&d)2)\t";cout<<endl;coutiBase:\t\t"((int*)(&d)"\t*((int*)(&d)+1)coutiDerived:\t"((int*)(&d)"\t*((int*)(&d)+2)300×0000000printoverwriteprintvoidvoidDerived_Mutlip_Inheritcoutdmi:\t\t"<<&dmi<<cout<<"虛函數(shù)表_vptr_Base:\t"<<(int*)(&dmi)<<cout"_vptr_Base1:\t"(int*)*(int*)(&dmi)"\t地址"<<endl;cout"_vptr_Base2:\t"((int*)*(int*)(&dmi)1)"\t";typedefvoid(*Fun)(void);FunpFun=(Fun)*(((int*)*(int*)(&dmi))+1);cout<<cout"_vptr_Base3:\t"((int*)*(int*)(&dmi)2)"\t";pFun=(Fun)*(((int*)*(int*)(&dmi))+2);cout<<cout<<"_vptr_Base4*((int*)*(int*)(&dmi)3)\t";cout<<endl;coutiBase:\t\t"<<((int*)(&dmi)<<"\t*((int*)(&dmi)+1)<<FOREGROUND_INTENSITY|FOREGROUND_GREEN);cout<<"+++++++++++++++++++++++++++++++++++++++++++"<<FOREGROUND_INTENSITY|cout_vptr_Base1\tint*)(&dmi+2endl;cout<<"_vptr_Base11t"(int*)*((int*)(&dmi+2tendl;cout<<"_vptr_Base12t"<<((int*)*((int*)(&dmi)+2)+1)<<"\t";typedefvoid(*Fun)(void);pFun=(Fun)*((int*)*((int*)(&dmi)+2)+1);cout<<cout"_vptr_Base13*((int*)*(int*)((int*)(&dmi+22\t";cout<<endl;cout<<"推測數(shù)據(jù)成員iBase1\tint*)(&dmi<<"\t*((int*)(&dmi)+3)<<endl;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE)FOREGROUND_INTENSITY|FOREGROUND_GREEN);cout<<"++++++++++++++++++++++++++++++++++++++++++"<<endl;FOREGROUND_INTENSITY|cout<<"推測數(shù)據(jù)成員iDerived\tint*)(&dmit*((int*)(&dmi40×000000000×00xvoidvoidDerived_Virtual_Inherit1coutdvi1:\t\t"<<&dvi1<<cout<<"虛函數(shù)表_vptr_Derived..地址:\t\t"<<(int*)(&dvi1)<<cout<<"_vptr_Derived1:\t"<<(int*)*(int*)(&dvi1)<<typedefFunpFun=(Fun)*((int*)*(int*)(&dvi1));cout<<cout<<"_vptr_Derived2:\t"<<*((int*)*(int*)(&dvi1)+1)【結束】cout<<cout<<"=======================:\t"<<((int*)(&dvi1)<<"\t(int*)*((int*)(&dvi1)+1)<<<<*(int*)*((int*)(&dvi1)+1)<<coutiDerived:\t"<<((int*)(&dvi1)<<"\t*((int*)(&dvi1)+2)<<cout<<"=======================:\t"<<((int*)(&dvi1)<<"\t*((int*)(&dvi1)+3)<<cout<<"虛函數(shù)表_vptr_Base:\t"<<((int*)(&dvi1)+4)<<endl;cout"_vptr_Base1:\t"(int*)*((int*)(&dvi1)+4)<<"\tcout"_vptr_Base2:\t"((int*)*((int*)(&dvi1)+4)+1)"\t";pFun=(Fun)*((int*)*((int*)(&dvi1)+4)+1);cout<<cout<<"_vptr_Base3:\t"<<((int*)*((int*)(&dvi1)+4)\t"*((int*)*((int*)(&dvi1)+4)+2);cout<<endl;coutiBase:\t\t"<<((int*)(&dvi1)<<"\t*((int*)(&dvi1)+5)<<voidvoidDerived_Virtualcoutdvi1:\t\t"<<&dvi1<<cout<<"虛函數(shù)表_vptr_inherit1:\t\t"<<(int*)(&dvi1)<<cout"_vptr_inherit11:\t"(int*)*(int*)(&dvi1)endl;typedefvoid(*Fun)(void);FunpFun=(Fun)*((int*)*(int*)(&dvi1));cout<<cout"_vptr_inherit12:\t"((int*)*(int*)(&dvi1)1)endl;pFun=(Fun)*((int*)*(int*)(&dvi1)+1);cout<<cout<<"_vptr_inherit13:\t"<<((int*)*(int*)(&dvi1)+"\t*((int*)*(int*)(&dvi1)2)\t";cout<<endl;cout<<"======指向=============:\t"<<((int*)(&dvi1)"\t(int*)*((int*)(&dvi1)+1)<<"\t"+1)<<coutiInherit1:\t"<<((int*)(&dvi1)<<"\t*((int*)(&dvi1)+2)<<cout<<"虛函數(shù)表_vptr_inherit2:\t"<<((int*)(&dvi1)+3)<<cout"_vptr_inherit21:\t"(int*)*((int*)(&dvi1)+3)endl;pFun=(Fun)*((int*)*((int*)(&dvi1)+3));cout<<cout<<"_vptr_inherit22:\t"<<(int*)*((int*)(&dvi1)+3)+<<"\t*((int*)*((int*)(&dvi1)+3)1)\t"endl;cout<<endl;cout<<"======指向=============:\t"<<((int*)(&dvi1)"\t(int*)*((int*)(&dvi1)+4)"\t"+4)<<coutiInherit2:\t"<<((int*)(&dvi1)<<"\t*((int*)(&dvi1)+5)<<coutiDerived:\t"<<((int*)(&dvi1)<<"\t*((int*)(&dvi1)+6)<<cout<<"=======================:\t"<<((int*)(&dvi1)<<"\t*((int*)(&dvi1)+7)<<cout<<"虛函數(shù)表_vptr_Base:\t"<<((int*)(&dvi1)+8)<<endl;cout"_vptr_Base1:\t"(int*)*((int*)(&dvi1)+8)<<"\tcout"_vptr_Base2:\t"((int*)*((int*)(&dvi1)+8)+1)"\t";pFun=(Fun)*((int*)*((int*)(&dvi1)+8)+1);cout<<cout<<"_vptr_Base3:\t"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論