L
Lighter
Big Problem! How to overload operator delete?
According to C++ standard, "A deallocation function can have more than
one parameter."(see 3.7.3.2); however, I don't know how to use an
overloaded delete operator. Let me use an example to illustrate this:
/********************************************************/
#include <new>
#include <iostream>
using namespace std;
void operator delete(void* p, const nothrow_t&)
{
cout << "Hello" << endl;
} // (1)
void operator delete(void* p, int a, int b)
{
cout << "World" << endl;
} // (2)
int main()
{
int* p = new(nothrow) int;
delete p; // This cannot render to show 'Hello' or 'World'
}
/********************************************************/
Even if I use 'delete(nothrow, p);', it cannot render to show 'Hello'
or 'World' either. My problem just lies here: Although I can write my
own operator delete, I cannot use it. As far as I know, the C++
standard doesn't give an example to illustrate the usage of delete (The
usage of new is given.).
An ugly way to do this is to use function call:
operator delete(nothrow, p); // This can render to show 'Hello'
However, I don't think this is the answer to my question. Who know the
correct one?
Any help will be appreciatied. Thanks in advance.
According to C++ standard, "A deallocation function can have more than
one parameter."(see 3.7.3.2); however, I don't know how to use an
overloaded delete operator. Let me use an example to illustrate this:
/********************************************************/
#include <new>
#include <iostream>
using namespace std;
void operator delete(void* p, const nothrow_t&)
{
cout << "Hello" << endl;
} // (1)
void operator delete(void* p, int a, int b)
{
cout << "World" << endl;
} // (2)
int main()
{
int* p = new(nothrow) int;
delete p; // This cannot render to show 'Hello' or 'World'
}
/********************************************************/
Even if I use 'delete(nothrow, p);', it cannot render to show 'Hello'
or 'World' either. My problem just lies here: Although I can write my
own operator delete, I cannot use it. As far as I know, the C++
standard doesn't give an example to illustrate the usage of delete (The
usage of new is given.).
An ugly way to do this is to use function call:
operator delete(nothrow, p); // This can render to show 'Hello'
However, I don't think this is the answer to my question. Who know the
correct one?
Any help will be appreciatied. Thanks in advance.