Thread Hilfe zu Fehlermeldung C2440
(5 answers)
Opened by pktm at 2008-01-11 00:58 nepos+2008-01-13 12:01:11-- 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.
|