Rückgabepointer einer const-Funktion löschen
-
Hi, ist es eigentlich erlaubt einen Pointer der von einer const-Funktion zurückgegeben wird zu löschen? Also in etwa sowas (konstruiertes Beispiel):
MyPointer* MyClass::GetPointer() const { return myPointer; } int main() { MyClass myClass; ... delete myClass.GetPointer(); return 0; }
-
Ja, wenn er vorher seinen Wert von new bekommen hat.
-
Wobei ich sagen muss, das dieser Code sicherlich problematisch in anderer Hinsicht ist. Ein delete lässt sich leicht vergessen. Ich würde hier keinen reinen Zeiger, sondern eher einen Smartpointer zurückgeben (z.B. unique_ptr oder auto_ptr wenn ersterer nicht zur Verfügung steht).
-
volkard schrieb:
Ja, wenn er vorher seinen Wert von new bekommen hat.
Und was passiert wenn es auch vorkommen kann, dass der Pointer nur mit nullptr initalisiert wurde?
-
StellerFragen schrieb:
Und was passiert wenn es auch vorkommen kann, dass der Pointer nur mit nullptr initalisiert wurde?
Nichts,
deleteauf Nullzeiger hat keinen Effekt.Aber warum sollte man einen zurückgegebenen Zeiger löschen? Warum überhaupt rohe besitzende Zeiger? asc hat schon Recht.