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。