如何重载delete操作符?

bluefin bluefin 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我在程序里想在一个类里重载delete操作符:
class A
{
...
static void operator delete(void *p) throw();
...
};

....

void A::operator delete(void *p) throw()
{
((A*)p)->~A();
cout << "delete called" << endl;
return;
}

....

int main()
{
A *p;
p=new(A);
....
delete p;
return 0;
}
可是我调用delete时,程序先调用系统的delete,再调用我自己定义的delete。我不是已经把它重载了吗?怎么还会调用系统的delete呢?
如果我改成:
A::operator delete p;
则没有问题,只调用我自己的delete
请问这是怎么回事?
...全文

相关推荐

评论 10
收藏 已收藏
分享
返回顶部
bluefin
C语言 70,039 成员 243,237 内容