У цьому підручнику ми дізнаємося про перевантаження конструктора в 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 ++.