Es gibt zwei Dinge, die Sie unterscheiden müssen. Einer ist ein neuer Ausdruck . Es ist der Ausdruck new T
und sein Ergebnis ist ein T*
. Es führt zwei Dinge aus: Zuerst ruft es den neuen Operator auf, um Speicher zuzuweisen , und ruft dann den -Konstruktor für T auf. (Wenn der Konstruktor abbricht Mit einer Ausnahme wird auch der Löschoperator aufgerufen.)
Der bereits erwähnte neue Operator wird jedoch in verschiedenen Varianten angeboten. Der prominenteste ist dieser:
%Vor%Man könnte es explizit nennen, aber das wird selten gemacht.
Es gibt andere Formen des neuen Operators , zum Beispiel für Arrays
%Vor%oder das so genannte Placement new (was wirklich ein Fake-New ist, da es nicht alloziert):
%Vor% Die Art des Wertes, der von new Type[x]
und new Type
zurückgegeben wird, ist Type *
. Ihr Beispiel double d = new int
enthält zwei Fehler:
double *d = new int
int *d = new int
oder void *d = new int
Tags und Links c++