Kursinhalt
C++ OOP
C++ OOP
Was ist ein Konstruktor der Klasse
Konstruktor ist eine spezielle Methode einer Klasse, die beim Erstellen eines Objekts aufgerufen wird. Damit können Sie die Attribute auf sinnvolle Werte initialisieren.
Durch die Verwendung von Konstruktoren kann die Erstellung von Objekten vereinfacht werden. 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 die Initialisierung der neu erstellten Instanz. Er kann die Anfangswerte der Attribute basierend auf den an den Konstruktor übergebenen Parametern festlegen und stellt sicher, dass das Objekt in einem gültigen Zustand startet.
Syntax des Konstruktors
Obwohl die Entwicklung eines Konstruktors auf den ersten Blick einfach erscheint, sind zahlreiche spezifische Aspekte zu beachten. Das allgemeine Vorgehen zur Erstellung ist:
student.h
class Student { public: Student() { name = 'Default'; } std::string name; };
- Name: Konstruktor hat denselben Namen wie die Klasse selbst;
- Rückgabetyp: Konstruktoren besitzen keinen Rückgabetyp, auch nicht
void
; - Parameter: Konstruktoren können Parameter aufnehmen und können mit unterschiedlichen Parametersätzen überladen werden, um verschiedene Möglichkeiten der Initialisierung von Objekten zu ermöglichen;
- Automatischer Aufruf: Konstruktor wird automatisch vom Compiler aufgerufen, wenn ein Objekt erstellt wird.
Standardkonstruktor
Ein Standardkonstruktor ist ein Konstruktor, der ohne Argumente aufgerufen werden kann. So werden Standardkonstruktoren definiert und verwendet:
main.cpp
#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.
Versuchen Sie, ein weiteres Objekt hinzuzufügen oder die Logik im Konstruktor zu ändern.
Wenn kein Konstruktor definiert ist, erzeugt der Compiler einen Standardkonstruktor. Dessen Verhalten hängt von den Typen der Membervariablen ab: fundamentale Typen, standardkonstruktible Typen oder benutzerdefinierte Typen.
main.cpp
#include <iostream> class Example { public: int value; }; int main() { Example obj; // Default constructor std::cout << obj.value; }
Ein Attribut ist ein fundamentaler Datentyp. Der automatisch generierte Standardkonstruktor initialisiert Membervariablen vom eingebauten Typ nicht. Sie erhalten unbestimmte Werte, wenn ein Objekt erstellt wird und diese Felder nicht explizit initialisiert werden.
Es kann sein, dass der Compiler einen konsistenten Wert für die Variable value bereitstellt, aber der Standard schreibt dies nicht vor und es ist möglich, dass sie einen undefinierten ("Garbage") Wert enthält.
Danke für Ihr Feedback!