Šajā apmācībā mēs uzzināsim par konstruktoru pārslodzi C ++, izmantojot piemērus.
Konstruktorus var pārslogot līdzīgi kā funkciju pārslodzi.
Pārslogotiem konstruktoriem ir tāds pats nosaukums (klases nosaukums), bet atšķirīgais argumentu skaits. Atkarībā no nodoto argumentu skaita un veida tiek izsaukts atbilstošais konstruktors.
1. piemērs: konstruktora pārslodze
// 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; )
Rezultāts
Persona1 Vecums = 20 Persona2 Vecums = 45
Šajā programmā mēs esam izveidojuši klasi Person
, kurai ir viens mainīgs vecums.
Mēs esam definējuši arī divus konstruktorus Person()
un Person(int a)
:
- Kad tiek izveidots objekts person1, tiek izsaukts pirmais konstruktors, jo mēs neesam izturējis nevienu argumentu. Šis konstruktors inicializē vecumu līdz
20
. - Kad persona2 ir izveidota, tiek izsaukts otrais konstruktors, jo mēs to esam izturējuši
45
kā argumentu. Šis konstruktors inicializē vecumu līdz45
.
Funkcija getAge()
atgriež vecuma vērtību, un mēs to izmantojam, lai izdrukātu personas1 un personas2 vecumu.
2. piemērs: konstruktora pārslodze
// 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; )
Rezultāts
Kad arguments netiek nodots: telpas platība = 28,98 Kad (8.2, 6.6) ir nodots. Telpas platība = 54,12 Kad platums ir fiksēts uz 7.2 un tiek nodota (8.2): telpas platība = 59.04
- Kad ir izveidota room1, tiek izsaukts pirmais konstruktors. garums tiek inicializēts līdz
6.9
un platums tiek inicializēts līdz4.2
. - Kad ir izveidota telpa2, tiek izsaukts otrais konstruktors. Mēs esam izturējuši argumentus
8.2
un6.6
. garums tiek inicializēts līdz pirmajam argumentam8.2
un platums tiek inicializēts līdz6.6
. - Kad ir izveidota room3, tiek izsaukts trešais konstruktors. Mēs esam izturējuši vienu argumentu
8.2
. garums tiek inicializēts argumentam8.2
.7.2
pēc noklusējuma tiek inicializēts platums .
Ieteicamā apmācība : C ++ funkciju pārslodze.