Angenommen, wir haben eine Hierarchie von Klassen und möchten, dass sie ihren Speicher nur über unseren Speichermanager zuweisen/freigeben. Wie lässt sich dieses Verhalten in klassischer C++-Manier erreichen? Ist es eine MUSS zusätzliche Kontrollen durchzuführen, wie zum Beispiel:
class Foo{
public:
virtual ~Foo(){}
void* operator new(size_t bytes)
{
if (bytes != sizeof(Foo)){
return ::operator new(bytes);
}
return g_memory_manager.alloc(bytes);
}
void operator delete(void *space, size_t bytes)
{
if (bytes != sizeof(Foo)){
return ::operator delete(space);
}
g_memory_manager.dealloc(space, bytes);
}
}