operator delete与delete的区别是什么?也不知道是不是还有个delete operator,弄糊涂了.

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 00:18:53

operator delete与delete的区别是什么?也不知道是不是还有个delete operator,弄糊涂了.
operator delete与delete的区别是什么?
也不知道是不是还有个delete operator,弄糊涂了.

operator delete与delete的区别是什么?也不知道是不是还有个delete operator,弄糊涂了.
嗯.是很搞的.
delete是我们编程时用的表达式,比如有一个指针int *ptr,我们写delete ptr;这句话会做两件事:1.这个ptr指向的对象的析构函数被调用.2.ptr指向的对象占用的内存被回收.其中第二步回收内存就是通过调用一个名为operator delete的函数来实现的.
至于有没有delete operator,我这么理上面一段话基本是翻译C++ primer的,在这本书中,new int和delete ptr这种写法中的new和delete分别被称为new表达式和delete表达式(原文用的是expression这个词),但在Effective C++中,却把所谓的new表达式称为new operator,那么我觉得如果有一样东西叫delete operator的话,那多半就是我们写代码中经常用的delete表达式了(就是delete ptr;这种表达式)
简单的说,new,delete是我们编码常用的表达式,operator new,operator delete则是两个函数,他们分别会在new和delete表达式执行的时候被调用,绝大多数时候我们是不用关心operator new和operator delete的