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 brandparámetros model. yearDentro 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;
}