⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 18-7.txt

📁 《C/C++完美演绎》源代码
💻 TXT
字号:
/*范例:18-7*/
Grandad A; Father B; Son C;
/* 取得对象的地址 */
cout << showbase;   	// 显示16进制"0x"
cout <<"&A=" <<&A <<endl;
cout <<"&B=" <<&B <<endl;
cout <<"&C=" <<&C <<endl;
cout <<"==============" <<endl;
/* 取得vptr的地址并印出内容*/
long *A_vptr,*B_vptr,*C_vptr;
A_vptr=(long *)&A;  	// 取得对象A的vptr地址
B_vptr=(long *)&B;  	// 取得对象B的vptr地址
C_vptr=(long *)&C;  	// 取得对象C的vptr地址
cout << "A_vptr=" << hex << *A_vptr << endl;	// 切换16进制输出
cout << "B_vptr=" << *B_vptr << endl;
cout << "C_vptr=" << *C_vptr << dec << endl;	// 切换10进制输出
cout <<"==============" <<endl;
/* 取得vtbl地址并印出内容*/
long *A_vtbl,*B_vtbl,*C_vtbl;
A_vtbl=(long *)*A_vptr;  	// 取得类Grandad的vtbl地址
B_vtbl=(long *)*B_vptr;  	// 取得类Father的vtbl地址
C_vtbl=(long *)*C_vptr;  	// 取得类Son的vtbl地址
cout <<"A_vtbl=" <<A_vtbl <<endl;
for (int i=0;i<3;i++)
  cout << " A_vtbl(" << i << ")=" << hex << *(A_vtbl+i) << dec << endl;
  cout <<"B_vtbl=" <<B_vtbl <<endl;
for (int i=0;i<3;i++)
  cout << " B_vtbl(" << i << ")=" << hex << *(B_vtbl+i) << dec << endl;
cout <<"C_vtbl=" <<C_vtbl <<endl;
for (int i=0;i<3;i++)
  cout << " C_vtbl(" << i << ")=" << hex << *(C_vtbl+i) << dec << endl;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -