0Pricing
C++ Academy · Lektion

Konstruktoren und Member-Initialisierungslisten

Initialisieren Sie Member übersichtlich mit Member-Initialisierungslisten.

Konstruktoren und Member-Initialisierungslisten 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 ist ein Konstruktor?

Ein Konstruktor ist eine spezielle Methode, die beim Erstellen eines Objekts ausgeführt wird. Er hat denselben Namen wie die Klasse und keinen Rückgabetyp.

class Point {
public:
    Point() {              // default constructor
        x_ = 0;
        y_ = 0;
    }
private:
    int x_, y_;
};

Parametrisierte Konstruktoren

Konstruktoren können Parameter entgegennehmen, und Sie können mehrere Überladungen definieren.

class Point {
    int x_, y_;
public:
    Point() : x_(0), y_(0) {}
    Point(int x, int y) : x_(x), y_(y) {}
};

Member-Initialisierungslisten

Die Syntax : member(value) vor dem Rumpf ist eine Member-Initialisierungsliste. Member werden hier initialisiert – nicht später im Rumpf zugewiesen.

class Person {
    std::string name_;
    int age_;
public:
    Person(std::string n, int a) : name_(std::move(n)), age_(a) {}
};

Warum Initialisierungslisten verwenden?

Member werden genau einmal mit dem richtigen Wert konstruiert. Ohne die Liste werden sie zunächst standardkonstruiert und anschließend zugewiesen – das ist bei nichttrivialen Typen ineffizient.

Reihenfolge der Initialisierung

Member werden in der Reihenfolge initialisiert, in der sie in der Klasse deklariert sind – nicht in der Reihenfolge der Initialisierungsliste. Halten Sie die Reihenfolge identisch, um Verwirrung zu vermeiden.

Standardinitialisierer innerhalb der Klasse (C++11)

Sie können Member direkt im Klassenrumpf mit Standardwerten versehen. Das ist nützlich, wenn die meisten Konstruktoren dieselben Standardwerte verwenden.

class Buffer {
    size_t size_ = 0;
    char* data_ = nullptr;
public:
    Buffer() = default;
    Buffer(size_t n) : size_(n), data_(new char[n]) {}
};

= default und = delete

Bitten Sie den Compiler, ein spezielles Member bereitzustellen oder zu entfernen:

class Widget {
public:
    Widget() = default;          // compiler-generated default
    Widget(const Widget&) = delete;  // disable copy
};

Delegierende Konstruktoren (C++11)

Ein Konstruktor kann einen anderen Konstruktor derselben Klasse aufrufen, um Initialisierungslogik gemeinsam zu verwenden.

class Box {
    int w_, h_, d_;
public:
    Box(int w, int h, int d) : w_(w), h_(h), d_(d) {}
    Box() : Box(1, 1, 1) {}      // delegates to the 3-arg ctor
};

Explizite Konstruktoren

Konstruktoren mit einem einzigen Argument können für implizite Konvertierungen verwendet werden. Kennzeichnen Sie sie mit explicit, um unerwartete Konvertierungen zu verhindern.

class Vector {
public:
    explicit Vector(size_t n);
};
Vector v = 10;          // ERROR: explicit prevents this
Vector v(10);            // OK

Destruktoren

Der Destruktor ~ClassName() wird ausgeführt, wenn ein Objekt zerstört wird. Verwenden Sie ihn, um Ressourcen freizugeben (Dateien, Sockets, manuellen Speicher).

Die Rule of Five (Vorschau)

Wenn Sie eine der speziellen Memberfunktionen schreiben (Destruktor, Kopierkonstruktor, Kopierzuweisungsoperator, Move-Konstruktor oder Move-Zuweisungsoperator), sollten Sie alle fünf berücksichtigen. Das wird im Kurs zu Move-Semantik behandelt.

Kurztest

Wodurch wird die Reihenfolge bestimmt, in der Klassenmember initialisiert werden?

Zusammenfassung

Verwenden Sie Konstruktoren, um den Objektzustand festzulegen. Bevorzugen Sie Member-Initialisierungslisten gegenüber Zuweisungen im Rumpf. Kennzeichnen Sie Konstruktoren mit einem einzelnen Argument mit explicit und verwenden Sie = default / = delete, um Ihre Absicht auszudrücken.

Häufig gestellte Fragen

Ist die Lektion „Konstruktoren und Member-Initialisierungslisten“ kostenlos?

Ja — der vollständige Text von „Konstruktoren und Member-Initialisierungslisten“ 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 „Konstruktoren und Member-Initialisierungslisten“?

Initialisieren Sie Member übersichtlich mit Member-Initialisierungslisten. 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 „Konstruktoren und Member-Initialisierungslisten“?

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. struct vs. class: Wann welches verwendet wird
  2. Membervariablen und Methoden
  3. Konstruktoren und Member-Initialisierungslisten
  4. Der this-Zeiger und Kapselung
← Zurück zu C++ Academy