Š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ę, Person
kurios 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
45
kaip 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.9
o plotis -4.2
. - Sukūrus kambarį2, iškviečiamas antrasis konstruktorius. Mes perdavėme argumentus
8.2
ir6.6
. ilgis inicijuojamas iki pirmo argumento,8.2
o 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.2
pagal numatytuosius nustatymus inicijuojamas plotis .
Rekomenduojama pamoka : C ++ funkcijos perkrova.