读书人

new/delete operator跟operator new/d

发布时间: 2012-09-10 22:20:12 作者: rapoo

new/delete operator和operator new/delete

关于new/delete存在两种情况,一种是new/delete operator和operator new/delete。那么两者有什么区别呢?

我们一般使用的new/delete都是语言内建的操作符,即new operator,类似于sizeof,所以被改变意义,它是不可以重载的,总是完成相同的功能。并且它的功能分为两个方面:

1.分配足够的内存来放置某类型的对象;

2.它会调用对象的构造函数,为步骤1分配的内存对象设定初值。

new operator总是做这两种事情。同理,delete operator也是做两种事情,首先会析构new产生的对象,然后释放该对象所占用的内存。

而operator new只是一个函数名称,执行必要的内存分配动作。因此可以重载或者重写该函数,改变其行为。该函数的声明通常为:

s->~string();operator delete(s);

综上所述:如果你只希望在heap上分配或者释放足够的内存,那么调用operator new/delete函数即可,而要在heap上分配内存并产生一个新的对象在该空间,那么就使用new/delete operator。



读书人网 >编程

热点推荐