Constructores C++
Constructores
Un constructor en C++ es un método especial que se llama automáticamente cuando se crea un objeto de una clase.
Para crear un constructor, use el mismo nombre que la clase, seguido de paréntesis ()
:
Ejemplo
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: el constructor tiene el mismo nombre que la clase, siempre es public
, y no tiene ningún valor de retorno.
Parámetros del constructor
Los constructores también pueden tomar parámetros (al igual que las funciones normales), que pueden ser útiles para establecer valores iniciales para los atributos.
La siguiente clase tiene atributos y un constructor con diferentes brand
parámetros model
. year
Dentro del constructor establecemos los atributos iguales a los parámetros del constructor ( brand=x
, etc). Cuando llamamos al constructor (al crear un objeto de la clase), le pasamos parámetros al constructor, que establecerá el valor de los atributos correspondientes al mismo:
Ejemplo
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;
}
Al igual que las funciones, los constructores también se pueden definir fuera de la clase. Primero, declare el constructor dentro de la clase y luego defínalo fuera de la clase especificando el nombre de la clase, seguido del ::
operador de resolución de alcance, seguido del nombre del constructor (que es el mismo que el de la clase):
Ejemplo
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;
}