c++的new和delete操作符重载
C++ new and delete operator overloading
void operator delete(void *p)
{
printf("nDELETE");
// code to actually delete/free object
}
int _tmain(int argc, _TCHAR* argv[])
{
int *p = new int(10);
delete p;
getchar();
return 0;
}
我得到错误operator delete已定义
我想全局重写new和delete操作符。
您是仅实现它还是还声明它?答:您只需要实现它。
可以通过两种方式替换/重载释放函数:
全局作用域中的:为了调用它,重载的分配函数的签名必须在释放位置可见,隐式声明的默认释放函数除外。此分配函数将用于当前程序中具有相应参数的所有释放在局部作用域中:重载操作符delete必须是类的静态公共成员函数。此释放函数仅用于特定类的释放。