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
45
selle argumendina läbinud . See konstruktor lähtestab vanuse45
.
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.9
ja laius on initsialiseeritud4.2
. - Ruumi2 loomisel kutsutakse teine konstruktor. Oleme argumendid läbinud
8.2
ja6.6
. pikkus algustatakse esimese argumendini8.2
ja laius initsialiseeritakse väärtuseni6.6
. - Ruumi3 loomisel kutsutakse kolmas konstruktor. Oleme ühe argumendi andnud
8.2
. pikkus initsialiseeritakse argumendiks8.2
. laius lähtestatakse7.2
vaikimisi.
Soovitatav õpetus : C ++ funktsiooni ülekoormamine.