Sobrecarga do construtor C ++ (com exemplos)

Neste tutorial, aprenderemos sobre sobrecarga de construtor em C ++ com a ajuda de exemplos.

Os construtores podem ser sobrecarregados de maneira semelhante à sobrecarga de funções.

Os construtores sobrecarregados têm o mesmo nome (nome da classe), mas um número diferente de argumentos. Dependendo do número e tipo de argumentos transmitidos, o construtor correspondente é chamado.

Exemplo 1: sobrecarga do construtor

 // C++ program to demonstrate constructor overloading #include using namespace std; class Person ( private: int age; public: // 1. Constructor with no arguments Person() ( age = 20; ) // 2. Constructor with an argument Person(int a) ( age = a; ) int getAge() ( return age; ) ); int main() ( Person person1, person2(45); cout << "Person1 Age = " << person1.getAge() << endl; cout << "Person2 Age = " << person2.getAge() << endl; return 0; )

Resultado

 Pessoa 1 Idade = 20 Pessoa 2 Idade = 45

Neste programa, criamos uma classe Personque possui uma única variável de idade.

Também definimos dois construtores Person()e Person(int a):

  • Quando o objeto person1 é criado, o primeiro construtor é chamado porque não passamos nenhum argumento. Este construtor inicializa age para 20.
  • Quando person2 é criado, o segundo construtor é chamado, pois passamos 45como um argumento. Este construtor inicializa age para 45.

A função getAge()retorna o valor de idade e o usamos para imprimir a idade de pessoa1 e pessoa2.

Exemplo 2: sobrecarga do construtor

 // C++ program to demonstrate constructor overloading #include using namespace std; class Room ( private: double length; double breadth; public: // 1. Constructor with no arguments Room() ( length = 6.9; breadth = 4.2; ) // 2. Constructor with two arguments Room(double l, double b) ( length = l; breadth = b; ) // 3. Constructor with one argument Room(double len) ( length = len; breadth = 7.2; ) double calculateArea() ( return length * breadth; ) ); int main() ( Room room1, room2(8.2, 6.6), room3(8.2); cout << "When no argument is passed: " << endl; cout << "Area of room = " << room1.calculateArea() << endl; cout << "When (8.2, 6.6) is passed." << endl; cout << "Area of room = " << room2.calculateArea() << endl; cout << "When breadth is fixed to 7.2 and (8.2) is passed:" << endl; cout << "Area of room = " << room3.calculateArea() << endl; return 0; )

Resultado

Quando nenhum argumento é passado: Área da sala = 28,98 Quando (8,2, 6,6) é passado. Área da sala = 54,12 Quando a largura é fixada em 7,2 e (8,2) é passada: Área da sala = 59,04
  • Quando room1 é criado, o primeiro construtor é chamado. comprimento é inicializado como 6.9e largura é inicializado como 4.2.
  • Quando room2 é criado, o segundo construtor é chamado. Passamos os argumentos 8.2e 6.6. comprimento é inicializado com o primeiro argumento 8.2e largura é inicializado com 6.6.
  • Quando room3 é criado, o terceiro construtor é chamado. Nós passamos um argumento 8.2. comprimento é inicializado para o argumento 8.2. amplitude é inicializada com o 7.2padrão.

Tutorial recomendado : Sobrecarga de função C ++.

Artigos interessantes...