Thread Hilfe zu Fehlermeldung C2440 (5 answers)
Opened by pktm at 2008-01-11 00:58

murphy
 2008-01-13 14:42
#104664 #104664
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
nepos+2008-01-13 12:01:11--
Eigentlich sollte es eine Referenz zurückgeben oder? [...]


Nein, der new-Operator gibt definitiv einen Zeiger zurück, keine Referenz. Das hat unter anderem den Grund, dass Referenzen sich ja semantisch wie Werte verhalten, man also keinen delete-Operator auf sie anwenden kann, was im Falle des Rückgabewertes von new wenig intuitiv wäre. Ferner hat es den Grund, dass die Allokation des Speichers in new fehlschlagen kann, woraufhin der Aufruf von new unter Umständen [*] [tt]NULL[/tt] zurückgibt. Eine Referenz kann in C++ aber niemals [tt]NULL[/tt] sein. [*] Unter Umständen heißt hier: Falls Exceptions deaktiviert sind, oder der Compiler aus anderen abstrusen Gründen den throw()-Override des new-Operators ausgewählt hat ;-)
When C++ is your hammer, every problem looks like your thumb.

View full thread Hilfe zu Fehlermeldung C2440