http://blog.csdn.net/flyingscv/archive/2008/05/03/2371153.aspx
2008-05-10 00:52
288 查看
感觉楼主把简单的问题复杂化了。无论有几重继承,虚函数的寻址都是虚表的首地址+ 函数在虚表中的偏移。
最后一句你提到:
vtable表中指针没有直接指向所要求的函数,而是指向调整ECX(即this指针)的代码,再间接跳转到所要求的函数
这句话我觉得这样说更准确:
对象对虚函数的调用不是直接跳到这个函数,而是通过对象头部的虚表的指针找到类的虚表,再通过计算函数在虚表中的偏移定位到这个函数。
关于虚表的汇编描述,可以在《c++ 编程思想》第二版15.5 how c++ implements late binding 中看到。关于虚表的实现思路,可以参考《Inside C++ Object Model》第4.2 Virtual Member Functions 中看到。
最后一句你提到:
vtable表中指针没有直接指向所要求的函数,而是指向调整ECX(即this指针)的代码,再间接跳转到所要求的函数
这句话我觉得这样说更准确:
对象对虚函数的调用不是直接跳到这个函数,而是通过对象头部的虚表的指针找到类的虚表,再通过计算函数在虚表中的偏移定位到这个函数。
关于虚表的汇编描述,可以在《c++ 编程思想》第二版15.5 how c++ implements late binding 中看到。关于虚表的实现思路,可以参考《Inside C++ Object Model》第4.2 Virtual Member Functions 中看到。
相关文章推荐
- WSDL: 描述你的Web服务(转载http://blog.csdn.net/flyingBox/archive/2006/01/01/568162.aspx)
- vs2005使用记趣(引用于http://blog.csdn.net/flyingjsj/archive/2008/08/02/2756496.aspx)
- http://blog.csdn.net/pongba/archive/2007/05/16/1611593.aspx
- 最开始下载的内核源码和机子的kernel不匹配,参照http://blog.csdn.net/hecant/archive/2007/10/31/1859606.aspx:
- 关于ubuntu10.04触摸板不能禁用和gedit文本编辑器中文乱码问题的一个解方案 转自:http://blog.csdn.net/luodayuan/archive/2010/05/23/5617615.aspx
- ant 介绍 http://blog.csdn.net/sunjavaduke/archive/2007/03/08/1523819.aspx
- 关于UML的个人见解--转自http://blog.csdn.net/ccat/archive/2010/06/13/5668593.aspx
- .net 中viewstate的原理和使用 转 http://blog.csdn.net/greyls/archive/2007/07/08/1682570.aspx
- Silverlight的开发工具 转http://blog.csdn.net/dotnetwalker/archive/2007/10/24/1841847.aspx
- 闭包(Closures)在各种语言中的例子 http://blog.csdn.net/ruby_cn/archive/2004/11/23/192588.aspx
- http://blog.csdn.net/pongba/archive/2007/12/11/1930150.aspx
- String,String,StringBuilder (转自http://blog.csdn.net/rmn190/archive/2007/01/24/1492013.aspx)
- http://blog.csdn.net/web518/archive/2005/04/21/356322.aspx
- [转]C#数据库连接字符串 [http://blog.csdn.net/xiaokexinger/archive/2007/03/26/1541441.aspx]
- 直接调用类成员函数地址(转载自http://blog.csdn.net/shamozhihuzhubohu/archive/2010/07/30/5776979.aspx)
- 预防SQL注入攻击之我见[转载http://blog.csdn.net/jyk/archive/2009/11/26/4882097.aspx]
- group、grouping、rollup、cube的用法和区别(本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/junmail/archive/2006/12/26/1463132.aspx)
- ASP.NET操作Word文档 http://blog.csdn.net/kaigood/archive/2007/01/18/1486607.aspx
- 摘自CSDNhttp://blog.csdn.net/gnuhpc/archive/2009/11/13/4808405.aspx
- [转]水晶报表列太多导致设计界面容纳不下的解决方法 [http://blog.csdn.net/lupenda/archive/2005/08/12/452878.aspx]