摘要: 2011-04-21 16:48:25|分类:C / C++|字号订阅在网上看到一个非常热的帖子,里面是这样的一个问题: 在打印的时候发现pFun的地址和 &(Base::f)的地址竟然不一样太奇怪了?经过一番深入研究,终于把这个问题弄明白了。下面就来一步步进行剖析。 根据VC的虚函数的布局机制,上述的布局如下: 然后我们再细细的分析第一种方式: Fun pFun = (Fun)*((int*)*(int*)(d)+0);d是一个类对象的地址。而在32位机上指针的大小是4字节,因此*(int*)(&d)取得的是vfptr,即虚表的地址。从而*((int*)*(int*)(&am 阅读全文
posted @ 2012-10-09 22:00 zearin 阅读(290) 评论(0) 推荐(0) 编辑