Kursinhalt
C++ OOP
C++ OOP
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:
main
#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.
main
#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.
main
#include <iostream> class MemberExample { public: MemberExample() { std::cout << "MemberExample: Constructor was called!" << std::endl; } }; class Example { public: MemberExample obj; }; int main() { Example obj; }
Danke für Ihr Feedback!