C++ Konstrukteure
Konstrukteure
Ein Konstruktor in C++ ist eine spezielle Methode, die automatisch aufgerufen wird, wenn ein Objekt einer Klasse erstellt wird.
Um einen Konstruktor zu erstellen, verwenden Sie denselben Namen wie die Klasse, gefolgt von Klammern ()
:
Beispiel
class MyClass { // Die Klasse
public: // Zugriffsspezifizierer
MyClass() { // Konstruktor
cout << "Hello World!";
}
};
int main() {
MyClass myObj; // Erstellen Sie ein Objekt von MyClass (dadurch wird der Konstruktor aufgerufen)
return 0;
}
Try it Yourself »
Hinweis: Der Konstruktor hat den gleichen Namen wie die Klasse, er ist immer public
und hat keinen Rückgabewert.
Konstruktorparameter
Konstruktoren können auch Parameter annehmen (genau wie normale Funktionen), was zum Festlegen von Anfangswerten für Attribute nützlich sein kann.
Die folgende Klasse verfügt über die Attribute brand
, model
und year
sowie einen Konstruktor mit unterschiedlichen Parametern. Im Konstruktor setzen wir die Attribute gleich den Konstruktorparametern (brand=x
, etc.). Wenn wir den Konstruktor aufrufen (indem wir ein Objekt der Klasse erstellen), übergeben wir Parameter an den Konstruktor, der den Wert der entsprechenden Attribute auf denselben setzt:
Beispiel
class Car { // Die Klasse
public: // Zugriffs-Spezifizierer
string brand; // Attribut
string model; // Attribut
int year; // Attribut
Car(string x, string y, int z) { // Konstruktor mit Parametern
brand = x;
model = y;
year = z;
}
};
int main() {
// Erstellen von Car-Objekten und Aufrufen des Konstruktors mit unterschiedlichen Werten
Car carObj1("BMW", "X5", 1999);
Car carObj2("Ford", "Mustang", 1969);
// Werte drucken
cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";
cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
return 0;
}
Try it Yourself »
Genau wie Funktionen können Konstruktoren auch außerhalb der Klasse definiert werden. Deklarieren Sie zuerst den Konstruktor innerhalb der Klasse und definieren Sie ihn dann außerhalb der Klasse, indem Sie den Namen der Klasse angeben, gefolgt von dem Operator scope resolution ::
, gefolgt vom Namen des Konstruktors (der mit der Klasse identisch ist):
Beispiel
class Car { // Die Klasse
public: // Zugriffs-Spezifizierer
string brand; // Attribut
string model; // Attribut
int year; // Attribut
Car(string x, string y, int z); // Deklaration des Konstruktors
};
// Konstruktordefinition außerhalb der Klasse
Car::Car(string x, string y, int z) {
brand = x;
model = y;
year = z;
}
int main() {
// Erstellen von Car-Objekten und Aufrufen des Konstruktors mit unterschiedlichen Werten
Car carObj1("BMW", "X5", 1999);
Car carObj2("Ford", "Mustang", 1969);
// Werte drucken
cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";
cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
return 0;
}
Try it Yourself »