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
, model
et 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;
}