Перегрузка конструктора C ++ (с примерами)

В этом руководстве мы узнаем о перегрузке конструктора в C ++ с помощью примеров.

Конструкторы могут быть перегружены аналогично перегрузке функций.

Перегруженные конструкторы имеют одно и то же имя (имя класса), но разное количество аргументов. В зависимости от количества и типа переданных аргументов вызывается соответствующий конструктор.

Пример 1: перегрузка конструктора

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

Вывод

 Человек1 Возраст = 20 Человек2 Возраст = 45

В этой программе мы создали класс Personс одной переменной age.

Мы также определили два конструктора Person()и Person(int a):

  • Когда создается объект person1, вызывается первый конструктор, потому что мы не передали никаких аргументов. Этот конструктор инициализирует возраст равным 20.
  • Когда создается person2, вызывается второй конструктор, поскольку мы передали его 45в качестве аргумента. Этот конструктор инициализирует возраст равным 45.

Функция getAge()возвращает значение возраста, и мы используем его для печати возраста person1 и person2.

Пример 2: перегрузка конструктора

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

Вывод

Если аргумент не передан: Площадь комнаты = 28,98 Если передано (8,2, 6,6). Площадь помещения = 54,12 При фиксированной ширине 7,2 и пройденном (8.2): Площадь помещения = 59,04
  • Когда создается room1, вызывается первый конструктор. длина инициализируется, 6.9а ширина - 4.2.
  • Когда создается room2, вызывается второй конструктор. Мы передали аргументы 8.2и 6.6. Длина инициализируется первым аргументом, 8.2а ширина - значением 6.6.
  • Когда создается room3, вызывается третий конструктор. Мы передали один аргумент 8.2. длина инициализируется аргументом 8.2. ширина 7.2по умолчанию инициализируется значением.

Рекомендуемый учебник : Перегрузка функций C ++.

Интересные статьи...