C++- constructeurs


Constructeurs

Een constructor in C++ is een speciale methode die automatisch wordt aangeroepen wanneer een object van een klasse wordt gemaakt.

Om een ​​constructor te maken, gebruikt u dezelfde naam als de klasse, gevolgd door haakjes ():

Voorbeeld

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

Opmerking: de constructor heeft dezelfde naam als de klasse, het is altijd public, en het heeft geen retourwaarde.


Constructorparameters

Constructors kunnen ook parameters gebruiken (net als reguliere functies), wat handig kan zijn voor het instellen van initiële waarden voor attributen.

De volgende klasse heeft brand, modelen yearattributen, en een constructor met verschillende parameters. Binnen de constructor stellen we de attributen gelijk aan de constructorparameters ( brand=x, enz.). Wanneer we de constructor aanroepen (door een object van de klasse te maken), geven we parameters door aan de constructor, die de waarde van de corresponderende attributen op hetzelfde instelt:

Voorbeeld

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

Net als functies kunnen constructeurs ook buiten de klasse worden gedefinieerd. Declareer eerst de constructor binnen de klasse en definieer deze vervolgens buiten de klasse door de naam van de klasse op te geven, gevolgd door de scope-resolutie- :: operator, gevolgd door de naam van de constructor (die hetzelfde is als de klasse):

Voorbeeld

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