📄 18-7.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 + -