C ++ konstruktoriaus perkrova (su pavyzdžiais)

Šioje pamokoje su pavyzdžių pagalba sužinosime apie konstruktoriaus perkrovą C ++.

Konstruktoriai gali būti perkrauti panašiai kaip funkcijų perkrova.

Perkrauti konstruktoriai turi tą patį pavadinimą (klasės pavadinimą), bet skirtingą argumentų skaičių. Atsižvelgiant į perduotų argumentų skaičių ir tipą, iškviečiamas atitinkamas konstruktorius.

1 pavyzdys: konstruktoriaus perkrova

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

Rezultatas

 Asmuo1 amžius = 20 Asmuo2 amžius = 45

Šioje programoje sukūrėme klasę, Personkurios amžius yra vienas.

Mes taip pat apibrėžėme du konstruktorius Person()ir Person(int a):

  • Kai sukuriamas objektas asmuo1, iškviečiamas pirmasis konstruktorius, nes mes nepateikėme jokio argumento. Šis konstruktorius inicijuoja amžių 20.
  • Sukūrus asmenį2, iškviečiamas antrasis konstruktorius, nes mes jį perdavėme 45kaip argumentą. Šis konstruktorius inicijuoja amžių 45.

Funkcija getAge()grąžina amžiaus reikšmę, ir mes ją naudojame atspausdinti asmens1 ir asmens2 amžių.

2 pavyzdys: konstruktoriaus perkrova

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

Rezultatas

Kai nepateikiamas nė vienas argumentas: Kambario plotas = 28,98 Kai praeina (8.2, 6.6). Kambario plotas = 54,12 Kai plotis fiksuojamas į 7.2 ir (8.2) yra praeita: Kambario plotas = 59.04
  • Sukūrus kambarį1, iškviečiamas pirmasis konstruktorius. ilgis inicijuojamas iki, 6.9o plotis - 4.2.
  • Sukūrus kambarį2, iškviečiamas antrasis konstruktorius. Mes perdavėme argumentus 8.2ir 6.6. ilgis inicijuojamas iki pirmo argumento, 8.2o plotis - 6.6.
  • Sukūrus kambarį3, iškviečiamas trečiasis konstruktorius. Mes perdavėme vieną argumentą 8.2. ilgis inicijuojamas pagal argumentą 8.2. 7.2pagal numatytuosius nustatymus inicijuojamas plotis .

Rekomenduojama pamoka : C ++ funkcijos perkrova.

Įdomios straipsniai...