/************************************************************************ *
The following example shows two overloaded new operator
functions.
* ************************************************************************/
#include <stddef.h>
class X
{
public:
void* operator new(size_t);
void* operator new(size_t, int);
};
void main ()
{
X* ptr1 = new X; // calls X::operator new(sizeof(X))
X* ptr2 = new(10) X; // calls X::operator
// new(sizeof(X),10)
}
/************************************************************************ *
The following example shows the declaration and use of the
operator functions operator new() and operator delete():
* ************************************************************************/
#include <stddef.h>
class X
{
public:
void* operator new(size_t);
void operator delete(void*); // single argument
};
class Y
{
public:
void operator delete(void*, size_t); // two arguments
};
void main ()
{
X* ptr = new X;
delete ptr; // call X::operator delete(void*)
Y* yptr;
// ...
delete yptr; // call Y::operator delete(void*, size_t)
// with size of Y as second argument
}