C ++ new和delete运算符重载

时间:2013-03-22 09:51:05

标签: c++ overloading operator-keyword

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;
}

我收到错误操作员删除已定义

我想全局覆盖new和delete运算符。

2 个答案:

答案 0 :(得分:0)

你只是实现它还是声明它? Afaik,你只需要实现它。

答案 1 :(得分:0)

可以通过两种方式替换/重载释放功能:

在全局范围内:为了调用它,重载分配函数的签名必须在释放位置可见,除了隐式声明的默认释放函数。该分配函数将用于当前程序中具有相应参数的所有解除分配 在本地范围内:重载的operator delete必须是该类的静态公共成员函数。此解除分配函数仅用于该特定类的解除分配。