Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Was Ist ein Constructor der Klasse | Konstruktoren und Destruktoren
C++ OOP
course content

Kursinhalt

C++ OOP

C++ OOP

1. Grundlagen der OOP in C++
2. Konstruktoren und Destruktoren
3. Kapselungsübersicht
4. Überblick Über die Vererbung
5. Überblick Über Polymorphismus

book
Was Ist ein Constructor der Klasse

Durch die Verwendung von Konstruktoren können Sie die Erstellung von Objekten vereinfachen. Ohne einen Konstruktor müssten Sie jede Eigenschaft einzeln setzen und möglicherweise mehrere Methoden aufrufen, nur um das Objekt in einen verwendbaren Zustand zu versetzen.

Der Hauptzweck eines Konstruktors ist es, die neu erstellte Instanz zu initialisieren. Er kann die Anfangswerte der Attribute basierend auf den an den Konstruktor übergebenen Parametern setzen, um sicherzustellen, dass das Objekt in einem gültigen Zustand startet.

Syntax des Konstruktors

Obwohl der Prozess der Entwicklung eines Konstruktors einfach erscheinen mag, sind zahlreiche spezifische Überlegungen erforderlich. Der allgemeine Ansatz zur Erstellung eines solchen ist:

  • Name: Ein Konstruktor hat denselben Namen wie die Klasse selbst.
  • Rückgabetyp: Konstruktoren haben keinen Rückgabetyp, nicht einmal void.
  • Parameter: Konstruktoren können Parameter annehmen. Sie können mit verschiedenen Parametersätzen überladen werden, um unterschiedliche Möglichkeiten zur Initialisierung von Objekten zu ermöglichen.
  • Automatische Aufruf: Ein Konstruktor wird automatisch vom Compiler aufgerufen, wenn ein Objekt erstellt wird. Dies umfasst die Erstellung mit dem new Schlüsselwort, direkte Variablendeklaration oder durch andere Mittel wie Kopierkonstruktion.

Standardkonstruktor

Ein Standardkonstruktor ist ein Konstruktor, der ohne Argumente aufgerufen werden kann. So werden Standardkonstruktoren definiert und verwendet:

cpp

main

copy
1234567891011121314
#include <iostream> class Example { public: Example() { std::cout << "Object was created!"; } }; int main() { Example obj; }

Sie können mit dem obigen Code experimentieren. Die Logik, die in der Example()-Methode geschrieben ist, wird jedes Mal ausgeführt, wenn eine Instanz der Klasse erstellt wird.

Hinweis

Versuchen Sie, ein weiteres Objekt hinzuzufügen oder die Logik im Konstruktor zu ändern.

Wenn Sie eine Klasse ohne explizite Definition von Konstruktoren erstellen, generiert der Compiler automatisch einen Standardkonstruktor für Sie. Sein Verhalten variiert basierend auf den Typen der Membervariablen in Ihrer Klasse, wie zum Beispiel, ob sie grundlegende Datentypen sind, Standardkonstruktoren haben oder benutzerdefinierte Typen sind.

cpp

main

copy
123456789101112
#include <iostream> class Example { public: int value; }; int main() { Example obj; // Default constructor std::cout << obj.value; }

Im obigen Beispiel ist das Attribut ein grundlegender Datentyp. Der automatisch generierte Standardkonstruktor initialisiert keine Membervariablen von eingebauten Typen. Sie werden unbestimmte Werte haben, wenn Sie ein Objekt erstellen und diese Felder nicht explizit initialisieren.

Hinweis

Sie könnten feststellen, dass der Compiler einen konsistenten Wert für die value-Variable bereitstellt, aber der Standard erfordert dies nicht und es ist möglich, dass sie einen Müllwert enthält.

Andererseits, wenn benutzerdefinierte Typen wie Klassen verwendet werden, ruft der Standardkonstruktor den Standardkonstruktor des Mitglieds auf, um das Mitgliedsobjekt zu initialisieren.

cpp

main

copy
123456789101112131415161718
#include <iostream> class MemberExample { public: MemberExample() { std::cout << "MemberExample: Constructor was called!" << std::endl; } }; class Example { public: MemberExample obj; }; int main() { Example obj; }
Wann wird der Konstruktor aufgerufen?

Wann wird der Konstruktor aufgerufen?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 1
We're sorry to hear that something went wrong. What happened?
some-alt