Construtores C++


Construtores

Um construtor em C++ é um método especial que é chamado automaticamente quando um objeto de uma classe é criado.

Para criar um construtor, use o mesmo nome da classe, seguido de parênteses ():

Exemplo

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: O construtor tem o mesmo nome da classe, é sempre public, e não tem nenhum valor de retorno.


Parâmetros do Construtor

Construtores também podem receber parâmetros (assim como funções regulares), que podem ser úteis para definir valores iniciais para atributos.

A classe a seguir tem atributos brand, modele yearum construtor com parâmetros diferentes. Dentro do construtor definimos os atributos iguais aos parâmetros do construtor ( brand=x, etc). Quando chamamos o construtor (criando um objeto da classe), passamos parâmetros para o construtor, que definirá o valor dos atributos correspondentes para o mesmo:

Exemplo

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

Assim como as funções, os construtores também podem ser definidos fora da classe. Primeiro, declare o construtor dentro da classe e, em seguida, defina-o fora da classe, especificando o nome da classe, seguido pelo :: operador de resolução de escopo, seguido pelo nome do construtor (que é o mesmo que a classe):

Exemplo

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