首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

new/delete operator跟operator new/delete

2012-09-10 
new/delete operator和operator new/delete关于new/delete存在两种情况,一种是new/delete operator和opera

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。



热点排行