void operator delete(void *, size_t)
void * operator new[](size_t);
void operator delete[](void *, size_t);
a: new 返回类型必须是void *
b: 参数必须是size_t【在<cstddef>定义】,它会被编译器赋值。
c: delete 返回类型必须是void
d: 第一个参数必须是void *
e: 第二个参数必须是size_t,[这个在对象类层次中非常基本的,如通过基类的指针来删除派生类的对象,呵呵,
前提是析构是虚的,则首先释放空间,然后析构]
f: 重载 new 和 delete, 这2个操作符会被自动处理为静态成员,无需programmer显示的把它申明为静态。
2
//定位操作符
void *operator new(size_t, class *pMem);
void operator delete(void*, class *pMem);
a: 第二个参数为定位实参的值。
b: 这里的delete 操作符, 不会被我们调用,汗~~~但为什么还有写此函数与此相匹配呢? 写这个的目的是
为了给compiler隐式调用的,如:
CLASS *pCls = new CLASS(); 等价于 Vois *pV = CLASS::operator new( sizeof(CLASS)); //分配memory