参照http://blog.csdn.net/wudaijun/article/details/9273339
(最近看STL有点分不清这两个东西,故记录一下)
- new operator:指我们在C++里通常用到的关键字,比如A* a = new A;
- 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++默认提供。因此前面的步骤也就是:
- 调用operator new (sizeof(A))
- 调用A:A()
- 返回指针