Entendendo Construtores em C++: Padrão, Parametrizados e de Cópia Explicados
Entendendo Construtores em C++
Este tutorial mergulha em construtores em C++ — o que são, por que importam e como implementar construtores padrão, parametrizados e de cópia com exemplos claros.
Um construtor é uma função membro especial que roda automaticamente quando um objeto é instanciado. Em C++, o construtor compartilha seu nome com a classe e não especifica tipo de retorno.
class Parede { public: // Construtor Parede() { // código de inicialização } };
O construtor deve:
- Ter o mesmo nome da classe.
- Declarar nenhum tipo de retorno.
- Ser acessível (tipicamente
public).
Construtor Padrão
Um construtor sem parâmetros é conhecido como construtor padrão. O exemplo Parede() acima é um.
Exemplo 1: Construtor Padrão
// Demonstrando um construtor padrão #include <iostream> using namespace std; class Parede { private: double comprimento; public: // Construtor padrão Parede() { comprimento = 5.5; cout << "Criando uma parede." << endl; cout << "Comprimento = " << comprimento << endl; } }; int main() { Parede parede1; return 0; }
Saída
Criando uma parede Comprimento = 5.5
Quando parede1 é instanciado, o construtor padrão define comprimento para 5.5 e imprime as mensagens.
Nota: Se uma classe não tem construtor explícito, o compilador gera automaticamente um construtor padrão que não faz nada.
Construtor Parametrizado
Construtores parametrizados recebem argumentos para inicializar dados de membro na criação do objeto. Eles são a forma preferida de configurar o estado de um objeto.
Exemplo 2: Construtor Parametrizado
// Calculando a área de uma parede usando construtor parametrizado #include <iostream> using namespace std; class Parede { private: double comprimento; double altura; public: // Construtor parametrizado Parede(double comp, double alt) { comprimento = comp; altura = alt; } double calcularArea() { return comprimento * altura; } }; int main() { Parede parede1(10.5, 8.6); Parede parede2(8.5, 6.3); cout << "Área da Parede 1: " << parede1.calcularArea() << endl; cout << "Área da Parede 2: " << parede2.calcularArea(); return 0; }
Saída
Área da Parede 1: 90.3 Área da Parede 2: 53.55
O construtor atribui os valores passados a comprimento e altura, permitindo que calcularArea() calcule a área da parede.
Construtor de Cópia
Um construtor de cópia cria um novo objeto como cópia exata de um existente. Ele é invocado quando um objeto é inicializado a partir de outro do mesmo tipo.
Exemplo 3: Construtor de Cópia
#include <iostream> using namespace std; class Parede { private: double comprimento; double altura; public: // Construtor parametrizado Parede(double comp, double alt) { comprimento = comp; altura = alt; } // Construtor de cópia Parede(Parede &obj) { comprimento = obj.comprimento; altura = obj.altura; } double calcularArea() { return comprimento * altura; } }; int main() { Parede parede1(10.5, 8.6); Parede parede2 = parede1; // Invoca construtor de cópia cout << "Área da Parede 1: " << parede1.calcularArea() << endl; cout << "Área da Parede 2: " << parede2.calcularArea(); return 0; }
Saída
Área da Parede 1: 90.3 Área da Parede 2: 90.3
O construtor de cópia copia comprimento e altura de parede1 para parede2, garantindo que ambos objetos tenham estado idêntico.
Nota: Construtores primariamente inicializam objetos, mas também permitem lógica personalizada rodar durante a criação do objeto.
Linguagem C
- Construtores em C#: Tipos, Exemplos e Padrões Avançados
- Dominando Sobrecarga de Construtores em C#
- Entendendo Tipos de Dados em C++: Fundamentos, Modificadores e Boas Práticas
- Dominando Operadores em C++: Guia Completo com Exemplos Práticos
- Comentários em C++: Boas Práticas para Código Legível e Manutenível
- Dominando Templates de Classe em C++: Um Guia Prático
- Dominando Construtores em Java: Tipos, Uso e Exemplos Práticos
- Entendendo Construtores Java: Inicialização e Boas Práticas
- Linguagem de Programação C++: Visão Geral e Principais Características
- Constantes e Literais em C++: Tipos, Sintaxe e Boas Práticas