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 Person
que 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
45
como um argumento. Este construtor inicializa age para45
.
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.9
e largura é inicializado como4.2
. - Quando room2 é criado, o segundo construtor é chamado. Passamos os argumentos
8.2
e6.6
. comprimento é inicializado com o primeiro argumento8.2
e largura é inicializado com6.6
. - Quando room3 é criado, o terceiro construtor é chamado. Nós passamos um argumento
8.2
. comprimento é inicializado para o argumento8.2
. amplitude é inicializada com o7.2
padrão.
Tutorial recomendado : Sobrecarga de função C ++.