免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: xyfree
打印 上一主题 下一主题

删帖吧 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2011-07-21 16:13 |只看该作者
函数指针的本质是什么,是一个可执行的内存地址,以及若干入栈出栈的规则。
只要是可执行的内存地址,并且入栈出栈规则相符合,那么就可以用那个函数指针指过去。

论坛徽章:
0
22 [报告]
发表于 2011-07-21 16:15 |只看该作者
不懂装懂的koolcoy同学,请先学习一下这个帖子:
http://topic.csdn.net/t/20050525/11/4033949.html

看一下类成员函数和函数指针是什么关系。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:45
23 [报告]
发表于 2011-07-21 16:59 |只看该作者
回复 22# wwwsq

俺纠结了半分钟要不要跟你掐架,算了没意思,无论是谁不懂装懂我都不再回这个帖子和因为这个事情再开的新帖。

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
24 [报告]
发表于 2011-07-21 17:02 |只看该作者
回复  w_anthony

情况复杂些,当使用了多继承和虚继承的时候一个简单的指针是没法搞定的。
koolcoy 发表于 2011-07-21 14:57



就算有多继承和虚继承,我怎么觉得还是可以4个字节搞定一个函数指针啊!?而且我觉得貌似与怎么继承好像没有什么关系。
1、如果非虚函数的函数指针,那和普通函数,应该没有区别,必定可以4字节解决。
2、如果是虚函数的函数指针,可以由编译器自动生成一段“函数代码”,而虚函数指针指向此“函数代码”入口地址,此“函数代码”中负责读取虚表得到真实函数地址以及对this指针做偏移修正,最后作相应跳转。这样也可以4字节解决,貌似VC也是这么做的。

真有必须8字节才能解决的状况么?可否举一个更确切的例子?

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
25 [报告]
发表于 2011-07-21 17:09 |只看该作者
回复  w_anthony

情况复杂些,当使用了多继承和虚继承的时候一个简单的指针是没法搞定的。
koolcoy 发表于 2011-07-21 14:57



用VC测试了一下了,竟然要12个字节{:3_191:}
貌似多继承,不管同时继承多少个,都是8个字节。
只要有虚继承,就有12个字节。
学习了!{:3_189:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP