C ++ kivitelező túlterhelése (példákkal)

Ebben az oktatóanyagban példák segítségével megismerhetjük a konstruktor C ++ nyelven történő túlterhelését.

A kivitelezők a funkció túlterheléséhez hasonló módon túlterhelhetők.

A túlterhelt konstruktoroknak ugyanaz a neve (az osztály neve), de az argumentumok száma eltérő. Az átadott argumentumok számától és típusától függően a megfelelő konstruktort hívjuk meg.

1. példa: A konstruktor túlterhelése

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

Kimenet

 Személy1 életkor = 20 Személy2 életkor = 45

Ebben a programban létrehoztunk egy osztályt Person, amelynek egyetlen változó kora van.

Két konstruktort is definiáltunk, Person()és Person(int a):

  • A person1 objektum létrehozásakor az első konstruktort meghívják, mert még egyetlen argumentumot sem adtunk át. Ez a konstruktor inicializálja az életkort 20.
  • Amikor a person2 létrehozásra kerül, a második konstruktort meghívjuk, mivel 45argumentumként átadtuk . Ez a konstruktor inicializálja az életkort 45.

A függvény getAge()visszaadja az életkor értékét, és ezzel kinyomtatjuk a person1 és a person2 életkorát.

2. példa: A konstruktor túlterhelése

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

Kimenet

Ha nem adunk át argumentumot: A terem területe = 28,98 Amikor a (8.2, 6.6) pontot átadjuk. A szoba területe = 54,12 Ha a szélesség 7,2-re van rögzítve, és a (8.2) pontot átadják: A szoba területe = 59,04
  • A szoba1 létrehozásakor az első konstruktort meghívjuk. hossza inicializálva van 6.9és szélessége inicializálva van 4.2.
  • A 2. szoba létrehozásakor a második konstruktort hívják meg. Tettük az érveket 8.2és 6.6. A hosszúságot az első argumentumra inicializáljuk, a 8.2szélességet pedig a 6.6.
  • A 3. szoba létrehozásakor a harmadik konstruktort hívják meg. Egy érvet túlléptünk 8.2. hossza inicializálódik az argumentumra 8.2. 7.2alapértelmezés szerint a szélesség inicializálva van .

Ajánlott oktatóanyag : C ++ funkció túlterhelése.

érdekes cikkek...