Преоптерећење конструктора Ц ++ (са примерима)

У овом упутству ћемо научити о преоптерећењу конструктора у Ц ++ уз помоћ примера.

Конструктори се могу преоптеретити на сличан начин као и преоптерећење функције.

Преоптерећени конструктори имају исто име (име класе), али различит број аргумената. У зависности од броја и врсте прослеђених аргумената, позива се одговарајући конструктор.

Пример 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):

  • Када се креира објекат персон1, позива се први конструктор јер нисмо проследили ниједан аргумент. Овај конструктор иницијализује аге то 20.
  • Када се креира персон2, позива се други конструктор пошто смо проследили 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
  • Када се креира соба1, позива се први конструктор. дужина је иницијализована за, 6.9а ширина је иницијализована за 4.2.
  • Када се креира соба2, позива се други конструктор. Прошли смо аргументе 8.2и 6.6. дужина је иницијализована за први аргумент, 8.2а ширина је иницијализована за 6.6.
  • Када се креира роом3, позива се трећи конструктор. Прошли смо један аргумент 8.2. ленгтх се иницијализује аргументом 8.2. ширина се подразумевано иницијализује на 7.2.

Препоручени водич : Преоптерећење функције Ц ++.

Занимљиви Чланци...