设为首页 加入收藏

TOP

C++再次理解虚表
2015-11-21 00:57:36 来源: 作者: 【 】 浏览:2
Tags:再次 理解

#include 
   
     using namespace std; class Base { public: virtual void fun1() { cout << Base::fun1() << endl; } virtual void fun2() { cout << Base::fun2() << endl; } }; class Son : public Base { public: void fun1() { cout << Son::fun1() << endl; } }; void Deal(int *p) { typedef void(*Pfun)();//函数指针。 //再次记住每张虚表后面的结束符是0(NULL)。 for (int i = 0; p[i] != NULL; i++) { Pfun fun = (Pfun)p[i]; fun(); } } void test() { Base b; Son s; int *p = (int *)*((int *)(&b));//此处是虚表的地址。 Deal(p);//将虚表地址传入。 } int main() { test(); return 0; }
   

这里写图片描述

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇NYOJ 46-最少乘法次数(数论) 下一篇ConcurrentHashMap 源码分析

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: