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
, model
e year
um 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;
}