C++- Konstruktoren
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 { // The class
public:
// Access specifier
MyClass() {
// Constructor
cout << "Hello World!";
}
};
int main() {
MyClass myObj; // Create an object of MyClass (this will call
the constructor)
return 0;
}
Hinweis: Der Konstruktor hat den gleichen Namen wie die Klasse, er ist immer public
, und er hat keinen Rückgabewert.
Konstruktorparameter
Konstruktoren können auch Parameter annehmen (genau wie normale Funktionen), die nützlich sein können, um Anfangswerte für Attribute festzulegen.
Die folgende Klasse hat brand
, model
und year
-Attribute und einen Konstruktor mit verschiedenen Parametern. Innerhalb des Konstruktors 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 Wert setzt:
Beispiel
class Car { // The class
public: // Access specifier
string brand; // Attribute
string model; // Attribute
int year; // Attribute
Car(string x, string y, int z)
{ // Constructor with parameters
brand =
x;
model = y;
year = z;
}
};
int main() {
//
Create Car objects and call the constructor with different values
Car carObj1("BMW", "X5", 1999);
Car carObj2("Ford", "Mustang",
1969);
// Print values
cout << carObj1.brand << " "
<< carObj1.model << " " << carObj1.year << "\n";
cout <<
carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
return 0;
}
Genau wie Funktionen können auch Konstruktoren 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 vom Bereichsauflösungsoperator ::
, gefolgt vom Namen des Konstruktors (der mit dem der Klasse identisch ist):
Beispiel
class Car { // The class
public: // Access
specifier
string brand; // Attribute
string model; // Attribute
int year;
// Attribute
Car(string x, string y, int z); //
Constructor declaration
};
// Constructor definition outside the
class
Car::Car(string x, string y, int z) {
brand = x;
model = y;
year = z;
}
int main() {
// Create
Car objects and call the constructor with different values
Car
carObj1("BMW", "X5", 1999);
Car carObj2("Ford", "Mustang", 1969);
// Print values
cout << carObj1.brand << " " <<
carObj1.model << " " << carObj1.year << "\n";
cout <<
carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
return 0;
}