0Pricing
C++ Academy · Lektion

const-Referenzen und ihr Einsatz

Übergeben Sie große Objekte effizient und sicher mit const-Referenzen.

const-Referenzen und ihr Einsatz ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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.

Was eine Const-Referenz verspricht

Eine const T&-Referenz sagt: "Ich werde das Objekt, auf das ich verweise, nicht ändern." Der Compiler erzwingt dies.

void print(const std::string& s) {
    // s.clear();   // ERROR: s is const
    std::cout << s;
}

Warum nicht einfach per Wert übergeben?

Das Kopieren großer Objekte ist ineffizient. Eine Const-Referenz ist praktisch kostenlos (intern ist sie nur ein Zeiger) und erlaubt der Funktion niemals, die Daten des Aufrufers zu ändern.

An alles binden

Eine Const-Referenz kann an Lvalues, Rvalues und temporäre Objekte gebunden werden — dadurch ist sie der flexibelste Parametertyp für den schreibgeschützten Zugriff.

void f(const std::string& s);
std::string a = "hi";
f(a);                 // lvalue
f("hello");           // temporary string
f(std::move(a));      // rvalue

Verlängerte Lebensdauer

Das Binden eines temporären Objekts an eine Const-Referenz verlängert die Lebensdauer des temporären Objekts auf die der Referenz. Nützlich für Inline-Konstruktion.

const std::string& greeting = "Hello, " + name;
// the concatenated string lives as long as `greeting`

Wann Sie keine Const-Referenz verwenden sollten

Übergeben Sie trivially copyable Typen (int, double, pointer) per Wert. Die Referenz fügt eine Indirektion hinzu, ohne etwas einzusparen.

Const-Referenz in Range-Based-for-Schleifen

Die übliche schreibgeschützte Schleife. Sie vermeidet sowohl Kopien als auch versehentliche Änderungen.

for (const auto& x : container) {
    process(x);
}

Rückgabe einer Const-Referenz

Geben Sie eine Const-Referenz zurück, wenn das Ergebnis ein vorhandenes Objekt ist, das der Aufrufer nicht ändern soll, beispielsweise ein Member oder ein zwischengespeicherter Wert.

class Person {
    std::string name_;
public:
    const std::string& name() const { return name_; }
};

Const-Korrektheit

Kennzeichnen Sie jeden Parameter und jede Memberfunktion, die den Zustand nicht ändern, als const. Der Compiler erkennt versehentliche Schreibzugriffe — ein leistungsfähiges Sicherheitsnetz.

Const-Memberfunktionen

Eine Memberfunktion, die nach der Parameterliste mit const gekennzeichnet ist, kann das Objekt nicht ändern. Sie kann für const-Instanzen aufgerufen werden.

class Counter {
    int n_ = 0;
public:
    int value() const { return n_; }   // pure reader
    void increment() { n_++; }
};

Fallstrick: const_cast entfernt const

Sie können const mit const_cast entfernen — bei einem ursprünglich als const deklarierten Objekt führt dies jedoch zu undefiniertem Verhalten. Verwenden Sie dies nur bei der Anbindung an ältere APIs, die keine const-Parameter unterstützen.

Mutable für internen Zustand

Das Schlüsselwort mutable ermöglicht es einer Const-Memberfunktion, bestimmte Member zu ändern — nützlich für Caching oder Mutexes.

class Cache {
    mutable std::mutex mtx_;
    mutable std::optional<int> cached_;
public:
    int value() const {
        std::lock_guard<std::mutex> lk(mtx_);
        // ...
    }
};

Kurzer Test

Warum ist es für einen Parameter normalerweise besser, const std::string& statt std::string zu schreiben?

Zusammenfassung

Verwenden Sie const T& für schreibgeschützte Parameter, Rückgabewerte von Gettern und Range-Based-for-Schleifen. Bei nicht trivialen Typen ist dies schneller als die Übergabe per Wert und sicherer als nicht konstante Referenzen.

Häufig gestellte Fragen

Ist die Lektion „const-Referenzen und ihr Einsatz“ kostenlos?

Ja — der vollständige Text von „const-Referenzen und ihr Einsatz“ 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 „const-Referenzen und ihr Einsatz“?

Übergeben Sie große Objekte effizient und sicher mit const-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 3 von 4.

Wie lange dauert die Lektion „const-Referenzen und ihr Einsatz“?

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. Warum Referenzen Aliase für Variablen sind
  2. Übergabe per Wert vs. per Referenz
  3. const-Referenzen und ihr Einsatz
  4. Lebensdauer von Referenzen und hängende Referenzen
← Zurück zu C++ Academy