如何重载delete操作符?
我在程序里想在一个类里重载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
请问这是怎么回事?