【问题标题】:C++ new and delete operator overloading [duplicate]C ++ new和delete运算符重载[重复]
【发布时间】:2013-03-12 03:02:58
【问题描述】:
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 already defined

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

【问题讨论】:

标签: c++ overloading operator-keyword


【解决方案1】:

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

【讨论】:

  • 是在.h文件中定义还是只在.cpp文件中实现?
  • 我猜你的意思是declared,而不是defined?而且我认为这与此错误无关。
  • 对不起,你是对的,我编辑了我的答案。我以为我在某个地方读到过……
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 2014-03-26
    • 1970-01-01
    • 2017-12-07
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多