Sunday, December 14, 2008

Overloading new and delete in C++

Here's an example that might help (should compile as is):

#include iostream

using namespace std;

class Base
{
public:
Base();
void* operator new(size_t size, char const * file, int line);
void operator delete(void* p);
};

class Derived :
public Base
{
public:
Derived();
};


Base::Base()
{
cout << "Base::Base()" <<>
}

void* Base:perator new(size_t size, char const * file, int line)
{
void* p = malloc(size);
//
cout << "New called! file: " <<>
" <<>
//
return p;
}

void Base:perator delete(void* p)
{
//
cout << "Delete called! p: " <<>
//
free(p);
}


Derived:erived()
{
cout << "Derived:erived()" <<>
}

int main()
{
Base* x = new(__FILE__, __LINE__) Derived;
delete x;
return 0;
}

No comments: