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。