Neste tutorial, aprenderemos sobre o construtor C ++ e seu tipo com os exemplos de ajuda.
Um construtor é um tipo especial de função de membro que é chamada automaticamente quando um objeto é criado.
Em C ++, um construtor tem o mesmo nome que o 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 classe,
- não tem um tipo de retorno, e
- é
public
Construtor C ++ padrão
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 using namespace std; // declare a class class Wall ( private: double length; public: // create a constructor Wall() ( // initialize private variables length = 5.5; cout << "Creating a wall." << endl; cout << "Length = " << length << endl; ) ); int main() ( // create an object Wall wall1; return 0; )
Resultado:
Criação de um comprimento de parede = 5,5
Aqui, quando o objeto wall1 é criado, o Wall()
construtor é chamado. Isso define a variável de comprimento do objeto para 5.5
.
Nota: Se não definimos um construtor em nossa classe, o compilador C ++ criará automaticamente um construtor padrão com um código vazio e sem parâmetros.
Construtor C ++ Parametrizado
Em C ++, um construtor com parâmetros é conhecido como um construtor parametrizado. Este é o método preferido para inicializar os dados do membro.
Exemplo 2: construtor parametrizado em C ++
// C++ program to calculate the area of a wall #include using namespace std; // declare a class class Wall ( private: double length; double height; public: // create parameterized constructor Wall(double len, double hgt) ( // initialize private variables 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() << endl; return 0; )
Resultado:
Área da parede 1: 90,3 Área da parede 2: 53,55
Aqui, criamos um construtor parametrizado Wall()
que possui 2 parâmetros: double len
e double hgt
. Os valores contidos nesses parâmetros são usados para inicializar as variáveis de membro comprimento e altura.
Quando criamos um objeto da Room
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, podemos agora calcular a área da parede com a 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 using namespace std; // declare a class class Wall ( private: double length; double height; public: // parameterized constructor Wall(double len, double hgt) ( // initialize private variables length = len; height = hgt; ) // copy constructor with a Wall object as parameter Wall(Wall &obj) ( // initialize private variables 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); // print area of wall1 cout << "Area of Room 1: " << wall1.calculateArea() << endl; // copy contents of room1 to another object room2 Wall wall2 = wall1; // print area of wall2 cout << "Area of Room 2: " << wall2.calculateArea() << endl; return 0; )
Resultado
Área da Sala 1: 90,3 Área da Sala 2: 90,3
Neste programa, usamos um construtor de cópia para copiar o conteúdo de um objeto da Wall
classe para outro. O código do construtor de cópia é:
Room(Room &obj) ( length = obj.length; height = obj.height; )
Observe que o parâmetro deste construtor possui o endereço de um objeto da Wall
classe.
Em seguida, atribuímos os valores das variáveis do primeiro objeto às variáveis correspondentes do segundo objeto. É assim que o conteúdo do objeto é copiado.
Em main()
, criamos dois objetos wall1 e wall2 e, em seguida, copiamos o conteúdo do primeiro objeto para o segundo com o código
Wall wall2 = wall1;
Nota : Um construtor é usado principalmente para inicializar objetos. Eles também são usados para executar um código padrão quando um objeto é criado.