Sobrecarga del constructor de C ++ (con ejemplos)

En este tutorial, aprenderemos sobre la sobrecarga de constructores en C ++ con la ayuda de ejemplos.

Los constructores se pueden sobrecargar de forma similar a la sobrecarga de funciones.

Los constructores sobrecargados tienen el mismo nombre (nombre de la clase) pero un número diferente de argumentos. Dependiendo del número y tipo de argumentos pasados, se llama al constructor correspondiente.

Ejemplo 1: sobrecarga del constructor

 // 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; )

Salida

 Persona1 Edad = 20 Persona2 Edad = 45

En este programa, hemos creado una clase Personque tiene una sola variable age.

También hemos definido dos constructores Person()y Person(int a):

  • Cuando se crea el objeto person1, se llama al primer constructor porque no hemos pasado ningún argumento. Este constructor inicializa age to 20.
  • Cuando se crea person2, se llama al segundo constructor ya que hemos pasado 45como argumento. Este constructor inicializa age to 45.

La función getAge()devuelve el valor de age y lo usamos para imprimir la edad de person1 y person2.

Ejemplo 2: sobrecarga del constructor

 // 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; )

Salida

Cuando no se pasa ningún argumento: Área de la habitación = 28.98 Cuando se pasa (8.2, 6.6). Área de la habitación = 54.12 Cuando la amplitud se fija en 7.2 y se pasa (8.2): Área de la habitación = 59.04
  • Cuando se crea room1, se llama al primer constructor. la longitud se inicializa en 6.9y la anchura se inicializa en 4.2.
  • Cuando se crea room2, se llama al segundo constructor. Hemos pasado los argumentos 8.2y 6.6. length se inicializa en el primer argumento 8.2y amplitud se inicializa en 6.6.
  • Cuando se crea room3, se llama al tercer constructor. Hemos pasado un argumento 8.2. length se inicializa en el argumento 8.2. amplitud se inicializa 7.2por defecto.

Tutorial recomendado : sobrecarga de funciones de C ++.

Articulos interesantes...