免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6398 | 回复: 14
打印 上一主题 下一主题

C++虚类问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-28 22:03 |只看该作者 |倒序浏览
这个东西大家都熟悉,
class derive :public base;
//都有个virtual的fun函数
base* p=new derive();
p->fun();
//访问derivefun

问一下,为什么用指针能防止这种“切片效果”(好像这个说法),而用非指针就不能实现同样的效果???

深层次的原因是什么,在具体编译时的情况是什么样?????????

[ 本帖最后由 vincol 于 2007-10-28 22:10 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-10-28 22:08 |只看该作者
看书吧,三言两语说不清。而且你问题都写错了

论坛徽章:
0
3 [报告]
发表于 2007-10-28 22:23 |只看该作者
晚绑定。  自己看书了再来问

论坛徽章:
0
4 [报告]
发表于 2007-10-29 10:21 |只看该作者
因为func()是虚函数,所以p->func()的函数地址只是针对p地址的固定偏移量.这个在编译时已经确定了.
所以无论你用基类的指针,还是派生类的指针都无所谓.

论坛徽章:
0
5 [报告]
发表于 2007-10-29 12:43 |只看该作者
谁不知道“迟绑定”,我是想问,这具体是怎么实现的!!!!
谁知道,简单介绍一下!

论坛徽章:
0
6 [报告]
发表于 2007-10-29 13:10 |只看该作者
原帖由 vincol 于 2007-10-29 12:43 发表
谁不知道“迟绑定”,我是想问,这具体是怎么实现的!!!!
谁知道,简单介绍一下!


其实每个C++类中都有一个virtual table, 内含class之中有作用的虚函数的地址, 然后每个对象有一个vptr, 指向了虚表的位置.
具体你可以看我上传的这本书的4.2节. 有详细的讲解. 候捷的深入浅出MFC第二章也有讲解.

Stanley B. Lippman - Inside C++ Object Model.chm

746.18 KB, 下载次数: 673

book

论坛徽章:
0
7 [报告]
发表于 2007-10-29 13:17 |只看该作者
没人下?
我下载。。。别告诉我是英文版

论坛徽章:
0
8 [报告]
发表于 2007-10-29 13:19 |只看该作者
啊啊啊啊。。。果然是英文版。。。而且我只能看到左边的列表,右边的内容为 不可访问 。。。 我这么这么衰哦。。。555

论坛徽章:
0
9 [报告]
发表于 2007-10-29 13:21 |只看该作者
原帖由 xB1ue 于 2007-10-29 13:19 发表
啊啊啊啊。。。果然是英文版。。。而且我只能看到左边的列表,右边的内容为 不可访问 。。。 我这么这么衰哦。。。555


嗯.是英文档.
可以访问啊. 我刚刚下了一次, 就打开了的! 你再试试看!
中文档是候捷译的, 太大了. 传不上来!

论坛徽章:
0
10 [报告]
发表于 2007-10-29 13:23 |只看该作者
中文版的我扫过几眼,英文版的一直没见。。。可能是我本地机器的问题,晚上回家再看了,谢谢你先
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP