Sieht aus wie operator new
und operator new[]
haben genau die gleiche Signatur:Was ist der Zweck, einen separaten "Operator new []" zu haben?
void* operator new(size_t size);
void* operator new[](size_t size);
und genau das gleiche tun: entweder einen Zeiger auf einen groß genug Block von rohen Rück Speicher (nicht in irgendeiner Weise initialisiert) oder eine Ausnahme auslösen.
Auch wird operator new
intern aufgerufen, wenn ich ein Objekt mit new
und operator new[]
schaffen - wenn ich ein Array von Objekten mit new[]
erstellen. Dennoch werden die obigen zwei speziellen Funktionen von C++ intern genau auf die gleiche Weise aufgerufen, und ich sehe nicht, wie die beiden Aufrufe unterschiedliche Bedeutungen haben können.
Was ist der Zweck, zwei verschiedene Funktionen mit genau den gleichen Signaturen und genau dem gleichen Verhalten zu haben?
Dies ist die echte Antwort. Die anderen sind Spekulationen darüber, warum es so ist, basierend auf den Konsequenzen, jetzt, wo wir sie getrennt haben. –