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, modelund 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;
}