Costruttori C++
Costruttori
Un costruttore in C++ è un metodo speciale che viene chiamato automaticamente quando viene creato un oggetto di una classe.
Per creare un costruttore, usa lo stesso nome della classe, seguito da parentesi ()
:
Esempio
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;
}
Nota: il costruttore ha lo stesso nome della classe, è sempre public
e non ha alcun valore restituito.
Parametri del costruttore
I costruttori possono anche prendere parametri (proprio come le normali funzioni), che possono essere utili per impostare i valori iniziali per gli attributi.
La classe seguente ha brand
, model
e year
attributi e un costruttore con parametri diversi. All'interno del costruttore impostiamo gli attributi uguali ai parametri del costruttore ( brand=x
, etc). Quando chiamiamo il costruttore (creando un oggetto della classe), passiamo parametri al costruttore, che imposterà il valore degli attributi corrispondenti allo stesso:
Esempio
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;
}
Proprio come le funzioni, i costruttori possono essere definiti anche al di fuori della classe. Innanzitutto, dichiara il costruttore all'interno della classe, quindi definiscilo all'esterno della classe specificando il nome della classe, seguito dall'operatore di risoluzione dell'ambito ::
, seguito dal nome del costruttore (che è lo stesso della classe):
Esempio
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;
}