免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2237 | 回复: 2

请教关于delete重载的问题 [复制链接]

论坛徽章:
0
发表于 2008-09-18 20:40 |显示全部楼层
20可用积分
在看C++的时候,看到了重载delete操作符.
看到了在类中有两种重载delete的方法,一种是:


  1. void operator delete(void*);
复制代码

另一种是

  1. void operator delete(void*, size_t);
复制代码


我想请教一下这两种重载的方式有什么区别? 该怎么样来使用? 我看了Effective C++上面关于这个的讲解, 不过还是没有弄懂.
还请指教, 谢谢!

最佳答案

查看完整内容

说说我的看法:当delete(void*)与delete(void*, size_t)都存在的时候,调用delete ptr时,是去调用delete(void*)这个,而如果只定义了delete(void*, size_t)的话,则是去调用这一个,此时将class的大小作为参数传递到第二个参数中去,所以说在重载的delete中,可以通过这个参数完成你想完成的一些功能。如取得类的大小啊之类的,而delete(void*)则不具备这种功能。

论坛徽章:
0
发表于 2008-09-18 20:40 |显示全部楼层
说说我的看法:

当delete(void*)与delete(void*, size_t)都存在的时候,调用delete ptr时,是去调用delete(void*)这个,而如果只定义了delete(void*, size_t)的话,则是去调用这一个,此时将class的大小作为参数传递到第二个参数中去,所以说在重载的delete中,可以通过这个参数完成你想完成的一些功能。如取得类的大小啊之类的,而delete(void*)则不具备这种功能。

论坛徽章:
0
发表于 2008-09-19 05:17 |显示全部楼层
原帖由 deepinthesea 于 2008-9-18 04:40 发表
在看C++的时候,看到了重载delete操作符.
看到了在类中有两种重载delete的方法,一种是:


void operator delete(void*);

另一种是

void operator delete(void*, size_t);


我想请教一下这两种重载 ...


功能都一样,下面一种用在多态里面可以有效的知道指针真正指向的对象的大小。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP