1. 程式人生 > >C++ operator new和new operator的區別

C++ operator new和new operator的區別

new operator

當你寫這種程式碼:

string *ps = new string("Memory Management");

你使用的new是new  operator

new操作符做兩件事,分配記憶體+呼叫建構函式初始化

 

operator new

你所能改變的是怎樣為物件分配記憶體

new操作符呼叫一個函式來完成必需的記憶體分配,你可以重寫或過載這個函式來改變它的行為。new操作符為分配記憶體所呼叫函式的名字operator new

operator new所瞭解的是記憶體分配,它對建構函式一無所知。

函式operator new 通常這樣宣告:

void * operator new(size_t size);

返回值型別是void*,由於這個函式返回一個未經處理(raw)的指標未初始化的記憶體。

引數size_t確定分配多少記憶體。

你能新增額外的引數過載函式operator new,可是第一個引數型別必須是size_t。