Zeiger oder Referenzen?
-
Was sollte ich grundsätzlich immer verwenenden?
-
Deinen Verstand
-
nullptr!
-
manni66 schrieb:
Deinen Verstand
Manchmal muss man auch auf sein Gefühl horchen.
-
std::reference_wrapper :p
-
Nathan schrieb:
std::reference_wrapper :p
Ach nö.
-
trodan schrieb:
Was sollte ich grundsätzlich immer verwenenden?
Alle Generalisierungen sind falsch.
Zeiger immer bei selber angelegten verkettetn Strukturen, wo die Daten auf dem Freispeicher leben. Hat auch den netten Vorteil, daß man nullptr/0/NULL als Pseudozeiger verwenden kann, um anzuzeigen, daß dieser Link nicht auf ein lebendes Objekt zeigt.
Leben die Objekte im Stack, kann man auch manchmal mit Referenzen verzeigern, so wenn die Verzeigerung immer zur root geht. Kann sehr nett sein.
Übergabeparameter, die als Kopie/Value gemeint sind, kann man auch per Referenz auf const übergeben. Je nach dem, vielleicht ist per Value besser wegen Move-Semantik.
Übergabeparameter, die als Zeiger auf veränderbares Objekt gemeint sind, kann man dann als Referenz übergeben, wenn im Zeiger kein nullptr stehen kann. Die meisten machen das sogar, um damit anzuzeigen, daß kein nullptr drin sein kann. Mir geht dabei flöten, daß der Aufrufer mit dem & anzeigt, daß Änderungen vorgesehen sind. Ich hab's lieber, daß die Aufrufer keine Sorgen haben, die Aufgerufenen sollen sich selber kümmern.
Dann gibt es noch die Operatoren, die kann man zum Teil gar nicht ohne Referenzen sinnvoll implementieren. Oder den verrückten Copy-Konstruktor.
trodan schrieb:
Was sollte ich grundsätzlich immer verwenenden?
Ganz klar Zeiger! Verwende Referenzen nur dann, wenn es erzwungen ist. Das bringt viel
mehr Klarheitweniger Verirrsinnung in den Code.