C++ new 和 operator new

参照http://blog.csdn.net/wudaijun/article/details/9273339


(最近看STL有点分不清这两个东西,故记录一下)

  • new operator:指我们在C++里通常用到的关键字,比如A* a = new A;
  • operator new:它是一个操作符,并且可被重载(类似加减乘除的操作符重载)
强调:new(或者 new operator)是关键字,而operator new是一个可以被重载的函数

比如我们写如下代码:

A* a = new A;

我们知道这里分为三步:1.分配内存,2.调用A()构造对象,3. 返回分配指针。事实上,分配内存这一操作就是由operator new(size_t)来完成的,如果类A重载了operator new,那么将调用A::operator new(size_t ),否则调用全局::operator new(size_t ),后者由C++默认提供。因此前面的步骤也就是:

  1. 调用operator new (sizeof(A))
  2. 调用A:A()
  3. 返回指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值