Construtores C ++: tipos e construtores de cópia

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 lene 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 Roomclasse, 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 Wallclasse 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 Wallclasse.

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.

Artigos interessantes...