博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
成员函数指针有多态的效果吗?
阅读量:5172 次
发布时间:2019-06-13

本文共 767 字,大约阅读时间需要 2 分钟。

这几天用bind的时候想到一个问题,成员函数指针有多态的效果吗?

我一直以为没有,测试之后发现是可以的,我对成员函数指针的理解有误

虚成员函数指针的调用过程是先调用函数vcall,vcall根据this寻址虚函数表然后去调用实际的函数,对于虚表上的每个索引x的函数都是使用vcall{x}进行调用

所以同一虚函数的父类和基类的成员函数指针的值是一样的,他们都指向vall{x}

所以成员函数指针是能够实现多态的

我在http://www.cnblogs.com/mightofcode/archive/2013/03/03/2939439.html里面关于成员函数指针的部分写的有点问题

 

注意:这里说的是成员函数指针的调用过程,跟直接调用CLASS.foo() 或者PCLASS->foo()是不一样的

调用过程:

虚成员函数调用:(pa->*ff1)();013117FE  mov         esi,esp  01311800  mov         ecx,dword ptr [ebp-44h]  01311803  call        dword ptr [ebp-50h]  调用vcallfooA::`vcall'{4}':0130C5EB  jmp         fooA::`vcall'{4}' (1314C70h)  vcall寻址虚表,找到实际函数地址fooA::`vcall'{4}':01314C70  mov         eax,dword ptr [ecx]  01314C72  jmp         dword ptr [eax+4]

 

转载于:https://www.cnblogs.com/mightofcode/archive/2013/03/31/2991823.html

你可能感兴趣的文章
201421410014蒋佳奇
查看>>
Xcode5和ObjC新特性
查看>>
CSS属性值currentColor
查看>>
Real-Time Rendering 笔记
查看>>
多路复用
查看>>
【UVA】434-Matty's Blocks
查看>>
hadoop2.2.0+hive-0.10.0完全分布式安装方法
查看>>
使用Reporting Services时遇到的小问题
查看>>
约瑟夫问题
查看>>
Arduino 报错总结
查看>>
树莓派Android Things物联网开发:树莓派GPIO引脚图
查看>>
矩阵快速幂---BestCoder Round#8 1002
查看>>
Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
查看>>
awk变量
查看>>
mysql_对于DQL 的简单举例
查看>>
35. Search Insert Position(C++)
查看>>
[毕业生的商业软件开发之路]C#异常处理
查看>>
有关快速幂取模
查看>>
NOI2018垫底记
查看>>
注意java的对象引用
查看>>