C ++ konstruktora pārslodze (ar piemēriem)

Š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 45kā argumentu. Šis konstruktors inicializē vecumu līdz 45.

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.9un platums tiek inicializēts līdz 4.2.
  • Kad ir izveidota telpa2, tiek izsaukts otrais konstruktors. Mēs esam izturējuši argumentus 8.2un 6.6. garums tiek inicializēts līdz pirmajam argumentam 8.2un platums tiek inicializēts līdz 6.6.
  • Kad ir izveidota room3, tiek izsaukts trešais konstruktors. Mēs esam izturējuši vienu argumentu 8.2. garums tiek inicializēts argumentam 8.2. 7.2pēc noklusējuma tiek inicializēts platums .

Ieteicamā apmācība : C ++ funkciju pārslodze.

Interesanti raksti...