Eine Referenz ist die weniger mächtige aber sicherere Form eines Pointers. In Teilbereichen kann man einen Pointer mit einer Referenz ersetzen, aber nicht immer. Im OOP könnte man das ganze als Vererbungshierarchie darstellen. Wobei ein Pointer eine Spezialisierung einer Referenz ist (also Pointer erbt von Referenz).
Um dir das als Java-Kenner etwas klarer zu machen, kannst du dir eine Referenz in C++ so vorstellen, wie eine Referenz (Variable auf ein Objekt) in Java, welche aber als final deklariert wurde (eine Referenz in C++ kann nicht mehr auf ein anderes Objekt (Datentyp) Referenziert werden; also wenn du in Java eine Variable mit final verwendest, kannst du in C++ eine Referenz verwenden (meistens)). Jedoch gib es dann noch ein paar zusätzliche unterscheide. Eine Referenz in C++ muss, zum Unterschied zu Java immer auf ein Objekt (Datentyp) referenzieren (kann also nicht null (NULL) sein).
Man sollte aus Sicherheitsgründen immer eine Referenz verwenden. Erst wenn es mit einer Referenz nicht mehr möglich ist (z.B.: dynamische Datenstrukturen, wenn man die Variable für verschiedene Objekte verwenden muss, ...), sollte man zu einem Pointer greifen. Denn immer da wo du einen Pointer verwendest, wird es "gefährlich" (also lieber 5 mal überlegen, ob es nicht doch mit einer Referenz geht; zudem solltest du dir als Ersatz für Pointer, Smartpointer ansehen).
|