Überladen des Operators new

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Die Operatoren New und Delete - Index

Die globalen Operatoren ::operator new() und ::operator new[]() können überladen werden. Jede überladene Instanz muss einen eigenen, eindeutigen Funktionskopf haben. Damit können dann mehrere Instanzen eines globalen Speicherreservierungsoperators im selben Programm existieren.

Klassenspezifische new-Operatoren können ebenfalls überladen werden. Die neue Operatorfunktion new kann implementiert werden, um eine Speicherreservierung (Heap) mit einer anderen Strategie zur Verfügung zu stellen oder um zusätzliche Argumente aufzunehmen. Ein anwenderdefinierter new-Operator muss den Typ void* zurückliefern und sein erstes Argument muss vom Typ size_t sein. Zum Überladen der new-Operatoren verwendet man die folgenden Prototypen:

  • void * operator new(size_t Typ_groesse); // Für Nicht-Arrays
  • void * operator new[](size_t Typ_groesse); // Für Arrays

Der Compiler stellt Typ_groesse dem new-Operator zur Verfügung. Für Typ kann jeder Datentyp eingesetzt werden, mit Ausnahme von Funktionen (Zeiger auf Funktionen sind aber erlaubt), Klassendeklarationen, Aufzählungstypdeklarationen, const und volatile.

Siehe auch