C ++ konstruktori ülekoormus (näidetega)

Selles õpetuses õpime näidete abil C ++ versioonis konstruktorite ülekoormamist.

Konstruktoreid saab üle koormata sarnaselt funktsioonide ülekoormamisele.

Ülekoormatud konstruktoritel on sama nimi (klassi nimi), kuid erinev argumentide arv. Sõltuvalt edastatud argumentide arvust ja tüübist kutsutakse vastav konstruktor.

Näide 1: Konstruktori ülekoormus

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

Väljund

 Isik1 Vanus = 20 Isik2 Vanus = 45

Selles programmis oleme loonud klassi Person, millel on üks muutuv vanus.

Oleme määratlenud ka kaks konstruktorit Person()ja Person(int a):

  • Objekti isik1 loomisel kutsutakse esimene konstruktor, kuna me pole ühtegi argumenti edastanud. See konstruktor lähtestab vanuse 20.
  • Kui inimene2 luuakse, kutsutakse teine ​​konstruktor, kuna oleme 45selle argumendina läbinud . See konstruktor lähtestab vanuse 45.

Funktsioon getAge()tagastab vanuse väärtuse ja me kasutame seda inimese1 ja inimese2 vanuse printimiseks.

Näide 2: Konstruktori ülekoormus

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

Väljund

Kui ühtegi argumenti ei edastata: ruumi pindala = 28,98 Kui (8.2, 6.6) on läbitud. Ruumi pind = 54,12 Kui laius on fikseeritud väärtusele 7.2 ja (8.2) on läbitud: Ruumi pind = 59.04
  • Ruumi1 loomisel kutsutakse esimene konstruktor. pikkus on initsialiseeritud 6.9ja laius on initsialiseeritud 4.2.
  • Ruumi2 loomisel kutsutakse teine ​​konstruktor. Oleme argumendid läbinud 8.2ja 6.6. pikkus algustatakse esimese argumendini 8.2ja laius initsialiseeritakse väärtuseni 6.6.
  • Ruumi3 loomisel kutsutakse kolmas konstruktor. Oleme ühe argumendi andnud 8.2. pikkus initsialiseeritakse argumendiks 8.2. laius lähtestatakse 7.2vaikimisi.

Soovitatav õpetus : C ++ funktsiooni ülekoormamine.

Huvitavad Artiklid...