2 Stimmen

Operator Neu/Löschen und Klassenhierarchien

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);  
  }  
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X