虚函数的内存结构
2016-05-13 22:58
288 查看
//参考http://www.cnblogs.com/Ripper-Y/archive/2012/05/15/2501930.html //参考http://blog.csdn.net/haoel/article/details/1948051/ #include <iostream> using namespace std; class base { virtual void f(){ cout<<"base::f"<<endl; }; virtual void g(){ cout<<"base::g"<<endl; }; virtual void h(){ cout<<"base::h"<<endl; }; }; class derive : public base { void f() { cout << "derive::f" << endl; } void g() { cout << "derive::g" << endl; } }; typedef void(*pfun)(); int main() { pfun fun=NULL; derive d; base *p=&d; cout << "虚函数表地址:" << hex << *((int**)p) << endl; cout << "虚函数表第一个函数地址:" << hex << **((int**)p) << endl; cout << "虚函数表第二个函数地址:" << hex << *(*((int**)p) + 1) << endl; cout << "虚函数表第三个函数地址:" << hex << *(*((int**)p) + 2) << endl; fun=(pfun)**((int**)p); fun(); //调用第一个函数 fun=(pfun)*(*((int**)p) + 1); fun(); //调用第二个函数 fun=(pfun)*(*((int**)p) + 2); fun(); //调用第三个函数 int ttt = 0; return 0; }
相关文章推荐
- 团队项目第三天
- 第17课:RDD案例(join、cogroup等实战)
- HTML入门笔记案例展示(2)
- codeforces 549H 二分
- HTML入门笔记案例展示(2)
- 动态代理
- java中的static关键字
- 声明replicated属性之后我编译不通过的问题
- 团队项目第二天
- Android百度地图API-快速接入
- 针对用css做滑动门时遇到width问题的一点新的
- 213. House Robber II
- git的学习笔记(修改bug时保存现场)
- jQuery弹出深色系层菜单
- 删除对话框
- hdu 1667 The Rotation Game(IDA*)
- matlab/简单的滤波程序
- 纯HTML标签详解
- HD巴什博奕<java实现>
- c++文件切割程序