0Pricing
C++ Academy · Lektion

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 image

Zeiger 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

  1. Rohe Zeiger und der Adressoperator
  2. Dereferenzierung und Zeigerarithmetik
  3. nullptr und Sicherheit bei Nullzeigern
  4. Wann Zeiger und wann Referenzen?
← Zurück zu C++ Academy