Wann Zeiger und wann Referenzen?
Wählen Sie anhand von Optionalität und Besitzsemantik zwischen Zeigern und Referenzen.
Wann Zeiger und wann Referenzen? ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C++ Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.
Verschiedene Werkzeuge für verschiedene Aufgaben
Referenzen und Zeiger ermöglichen beide den indirekten Zugriff auf ein anderes Objekt – aber mit unterschiedlicher Semantik. Verwenden Sie jedes dort, wo es seine Stärken ausspielt.
Referenzen für erforderliche Ziele
Eine Referenz kann weder null sein noch neu gebunden werden. Verwenden Sie einen Referenzparameter, wenn die Funktion immer ein echtes Objekt benötigt.
void render(const Image& img); // must have an imageZeiger für optionale Ziele
Ein Zeiger kann null sein. Verwenden Sie einen Zeiger, wenn das Argument tatsächlich optional ist.
void render(const Image* img); // nullptr means "skip"Zeiger bei Neuzuweisung
Zeiger können auf andere Objekte umgeleitet werden. Verwenden Sie sie, wenn sich die Indirektion während des Algorithmus ändert – etwa bei einem beweglichen Cursor oder dem aktuellen Knoten.
Node* current = head;
while (current) {
process(current);
current = current->next;
}Referenzen für Container mit Referenzen?
Sie können kein std::vector<T&> haben. Verwenden Sie stattdessen std::vector<std::reference_wrapper<T>> oder speichern Sie Zeiger.
Referenzen zurückgeben
Geben Sie eine Referenz zurück, wenn das Ergebnis den Aufruf überlebt und der Aufrufer sie direkt verwenden darf (Member, Containerelemente).
std::string& Person::name() { return name_; }Zeiger zurückgeben
Geben Sie einen Zeiger zurück, wenn die Funktion möglicherweise „kein Ergebnis“ liefert oder die Besitzverhältnisse unklar sind. Bevorzugen Sie im modernen Code std::optional oder Smart Pointer.
Klassenmember
Das Speichern einer Referenz als Member legt das referenzierte Objekt für die Lebensdauer des Objekts fest – und verhindert Kopierzuweisungen. Memberzeiger sind flexibler, erfordern aber Prüfungen auf null.
Polymorphie
Sowohl Zeiger als auch Referenzen können für Polymorphie verwendet werden. Speichern Sie Basisklassenzeiger in Containern (vector kann keine Referenzen aufnehmen); verwenden Sie Referenzen als Parameter, wenn null ungültig ist.
Smart Pointer statt roher Besitzer
Verwenden Sie rohe Zeiger nur für nicht besitzende Indirektion. Der Besitz gehört zu std::unique_ptr oder std::shared_ptr.
Entscheidungshilfe
Kurzübersicht:
- Immer ein gültiges Objekt → Referenz
- Möglicherweise nicht vorhanden → Zeiger oder
std::optional - Indirektion, die sich bewegt → Zeiger
- Besitzt den Speicher → Smart Pointer
- In einem Container → Zeiger (Vektoren mit Referenzen sind unpraktisch)
Kurzer Test
Welcher Parametertyp eignet sich am besten für eine Funktion, die ein nicht-nullbares Objekt benötigt?
Zusammenfassung
Verwenden Sie Referenzen für erforderliche, unveränderliche Ziele und Zeiger für optionale oder wechselnde Ziele. Für Besitzverhältnisse bevorzugen Sie Smart Pointer. Container benötigen normalerweise Zeiger, keine Referenzen.
Häufig gestellte Fragen
Ist die Lektion „Wann Zeiger und wann Referenzen?“ kostenlos?
Ja — der vollständige Text von „Wann Zeiger und wann Referenzen?“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C++ Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Wann Zeiger und wann Referenzen?“?
Wählen Sie anhand von Optionalität und Besitzsemantik zwischen Zeigern und Referenzen. Du übst C++ Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C++ Academy zu starten?
Keine Vorkenntnisse erforderlich. C++ Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Wann Zeiger und wann Referenzen?“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C++ Academy-Lektion Code schreiben und ausführen?
Ja. Jede C++ Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Rohe Zeiger und der Adressoperator
- Dereferenzierung und Zeigerarithmetik
- nullptr und Sicherheit bei Nullzeigern
- Wann Zeiger und wann Referenzen?