Constructeurs C++


Constructeurs

Un constructeur en C++ est une méthode spéciale qui est automatiquement appelée lorsqu'un objet d'une classe est créé.

Pour créer un constructeur, utilisez le même nom que la classe, suivi de parenthèses ():

Exemple

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

Remarque : Le constructeur a le même nom que la classe, c'est toujours public, et il n'a pas de valeur de retour.


Paramètres du constructeur

Les constructeurs peuvent également prendre des paramètres (tout comme les fonctions normales), ce qui peut être utile pour définir les valeurs initiales des attributs.

La classe suivante a des attributs brand, modelet year, et un constructeur avec différents paramètres. À l'intérieur du constructeur, nous définissons les attributs égaux aux paramètres du constructeur ( brand=x, etc.). Lorsque nous appelons le constructeur (en créant un objet de la classe), nous passons des paramètres au constructeur, qui définira la valeur des attributs correspondants à la même :

Exemple

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

Tout comme les fonctions, les constructeurs peuvent également être définis en dehors de la classe. Tout d'abord, déclarez le constructeur à l'intérieur de la classe, puis définissez-le en dehors de la classe en spécifiant le nom de la classe, suivi de l' :: opérateur de résolution de portée, suivi du nom du constructeur (qui est le même que la classe) :

Exemple

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