Перевантаження конструктора 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який має одну змінну вікову категорію.

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

  • Коли створюється об'єкт person1, викликається перший конструктор, оскільки ми не передали жодного аргументу. Цей конструктор ініціалізує вік до 20.
  • Коли створюється person2, викликається другий конструктор, оскільки ми передали його 45як аргумент. Цей конструктор ініціалізує вік до 45.

Функція getAge()повертає значення віку, і ми використовуємо його для друку віку особи1 та особи2.

Приклад 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. length ініціалізується до першого аргументу, 8.2а width - до 6.6.
  • Коли створюється room3, викликається третій конструктор. Ми передали один аргумент 8.2. length ініціалізується аргументом 8.2. Ширина ініціалізується 7.2за замовчуванням.

Рекомендований підручник : Перевантаження функції C ++.

Цікаві статті...