C++ 中,new其实有三种含义:
1.new operator
2.operator new
3.placement new
我们最常用的用法是
A *a = new A();
这里的new就是new operator,它一共包含了三步:
1.分配内存
2.调用A的构造函数
3.返回内存指针
第一步,分配内存,实际就是使用operator new,效果和malloc类似,直接调用的话,如下:
a = operator new(size); 或者
operator new[](size);
第二步,调用对象的构造函数,实际调用的就是placement new, 直接调用的话,如下:
new(a)A();
如果对栈上的指针使用placement new(即a是栈上的指针),那么必须显式调用析构函数
a->~A(); 这也是需要显式调用析构函数的唯一情况