Construtores C++
Construtores C++
Neste tutorial, aprenderemos sobre o construtor C++ e seu tipo com os exemplos de ajuda.
Um construtor é um tipo especial de função membro que é chamado automaticamente quando um objeto é criado.
Em C++, um construtor tem o mesmo nome da classe e não possui um tipo de retorno. Por exemplo,
class Wall {
public:
// create a constructor
Wall() {
// code
}
};
Aqui, a função
Wall()
é um construtor da classe Wall
. Observe que o construtor - tem o mesmo nome da turma,
- não tem um tipo de retorno e
- é
public
Construtor padrão C++
Um construtor sem parâmetros é conhecido como construtor padrão . No exemplo acima,
Wall()
é um construtor padrão. Exemplo 1:Construtor padrão C++
// C++ program to demonstrate the use of default constructor
#include <iostream>
using namespace std;
// declare a class
class Wall {
private:
double length;
public:
// default constructor to initialize variable
Wall() {
length = 5.5;
cout << "Creating a wall." << endl;
cout << "Length = " << length << endl;
}
};
int main() {
Wall wall1;
return 0;
}
Saída
Creating a Wall Length = 5.5
Aqui, quando o wall1 objeto é criado, o
Wall()
construtor é chamado. Isso define o comprimento variável do objeto para 5.5
. Observação: Se não tivermos definido um construtor em nossa classe, o compilador C++ criará automaticamente um construtor padrão com um código vazio e sem parâmetros.
Construtor parametrizado C++
Em C++, um construtor com parâmetros é conhecido como construtor parametrizado. Este é o método preferencial para inicializar dados de membros.
Exemplo 2:Construtor parametrizado C++
// C++ program to calculate the area of a wall
#include <iostream>
using namespace std;
// declare a class
class Wall {
private:
double length;
double height;
public:
// parameterized constructor to initialize variables
Wall(double len, double hgt) {
length = len;
height = hgt;
}
double calculateArea() {
return length * height;
}
};
int main() {
// create object and initialize data members
Wall wall1(10.5, 8.6);
Wall wall2(8.5, 6.3);
cout << "Area of Wall 1: " << wall1.calculateArea() << endl;
cout << "Area of Wall 2: " << wall2.calculateArea();
return 0;
}
Saída
Area of Wall 1: 90.3 Area of Wall 2: 53.55
Aqui, criamos um construtor parametrizado
Wall()
que tem 2 parâmetros:double len
e double hgt
. Os valores contidos nestes parâmetros são usados para inicializar as variáveis membro comprimento e altura . Quando criamos um objeto da classe
Wall
classe, passamos os valores para as variáveis de membro como argumentos. O código para isso é:
Wall wall1(10.5, 8.6);
Wall wall2(8.5, 6.3);
Com as variáveis de membro assim inicializadas, agora podemos calcular a área da parede com o
calculateArea()
função. Construtor de cópia C++
O construtor de cópia em C++ é usado para copiar dados de um objeto para outro.
Exemplo 3:Construtor de cópia C++
#include <iostream>
using namespace std;
// declare a class
class Wall {
private:
double length;
double height;
public:
// initialize variables with parameterized constructor
Wall(double len, double hgt) {
length = len;
height = hgt;
}
// copy constructor with a Wall object as parameter
// copies data of the obj parameter
Wall(Wall &obj) {
length = obj.length;
height = obj.height;
}
double calculateArea() {
return length * height;
}
};
int main() {
// create an object of Wall class
Wall wall1(10.5, 8.6);
// copy contents of wall1 to wall2
Wall wall2 = wall1;
// print areas of wall1 and wall2
cout << "Area of Wall 1: " << wall1.calculateArea() << endl;
cout << "Area of Wall 2: " << wall2.calculateArea();
return 0;
}
Saída
Area of Wall 1: 90.3 Area of Wall 2: 90.3
Neste programa, usamos um construtor de cópia para copiar o conteúdo de um objeto do
Wall
classe para outra. O código do construtor de cópia é:
Wall(Wall &obj) {
length = obj.length;
height = obj.height;
}
Observe que o parâmetro deste construtor tem o endereço de um objeto do
Wall
classe. Em seguida, atribuímos os valores das variáveis do obj object para as variáveis correspondentes do objeto chamando o construtor de cópia. É assim que o conteúdo do objeto é copiado.
Em
main()
, então criamos dois objetos wall1 e parede2 e copie o conteúdo de wall1 para parede2 :
// copy contents of wall1 to wall2
Wall wall2 = wall1;
Aqui, o wall2 objeto chama seu construtor de cópia passando o endereço do wall1 objeto como seu argumento, ou seja,
&obj = &wall1
. Observação :Um construtor é usado principalmente para inicializar objetos. Eles também são usados para executar um código padrão quando um objeto é criado.
Linguagem C