Претоварване на конструктора на 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; )

Изход

 Person1 Възраст = 20 Person2 Възраст = 45

В тази програма създадохме клас, Personкойто има една променлива възраст.

Дефинирали сме и два конструктора 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. length се инициализира до първия аргумент, 8.2а широчината се инициализира до 6.6.
  • Когато се създава room3, се извиква третият конструктор. Предадохме един аргумент 8.2. length се инициализира в аргумента 8.2. широчина се инициализира 7.2по подразбиране.

Препоръчителен урок : Претоварване на функцията C ++.

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