一、功能
1、分配內存
2、調對應構造函數創建對象
二、分類
1、常說的 new
動態分配堆內存,這塊內存用來存放類對象數據,並返回這塊內存的地址,得到對象的指針,可以使用對象的公有數據成員和公有函數。
2、operator new
功能:只是負責分配內存
用法:void* operator new(size_t size)
說明:分配 size 個字節大小的未被初始化的內存塊
3、placement new
在已經分配好的內存空間上,創建一個類對象
用法:new(void* pBuf) Class()
說明:pBuf 爲已分配的內存首地址,Class 爲要在此內存上建立的類名
三、示例
#include <iostream>
class NewTest
{
};
int main()
{
//new : 分配內存的同時,在此內存空間上創建一個類對象(調用了構造函數)
NewTest* pcls = new NewTest();
//operator new : 只是負責分配內存
void* pMemory = operator new(sizeof(NewTest));
//placement new : 在已經分配好的內存空間上,創建一個類對象
void* pBuf = malloc(sizeof(NewTest));
NewTest* pclsNewTest = new(pBuf) NewTest();
}
四、參考
https://www.cnblogs.com/slgkaifa/p/6887887.html