Tässä opetusohjelmassa opit rakentajien ylikuormituksesta C ++: ssa esimerkkien avulla.
Rakentajia voidaan ylikuormittaa samalla tavalla kuin toimintojen ylikuormitusta.
Ylikuormitetuilla rakentajilla on sama nimi (luokan nimi), mutta eri määrä argumentteja. Lähetettyjen argumenttien lukumäärästä ja tyypistä riippuen vastaava konstruktori kutsutaan.
Esimerkki 1: Rakentajan ylikuormitus
// 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; )
Tuotos
Henkilö1 Ikä = 20 Henkilö2Ikä = 45
Tässä ohjelmassa olemme luoneet luokan Person
, jolla on yksi vaihteleva ikä.
Olemme myös määrittäneet kaksi rakentajaa Person()
ja Person(int a)
:
- Kun objekti henkilö1 luodaan, ensimmäinen konstruktori kutsutaan, koska emme ole välittäneet mitään argumenttia. Tämä rakentaja alustaa iän
20
. - Kun henkilö2 luodaan, toinen konstruktori kutsutaan, koska olemme ohittaneet
45
sen argumenttina. Tämä rakentaja alustaa iän45
.
Funktio getAge()
palauttaa ikän arvon, ja käytämme sitä ihmisen1 ja henkilön2 iän tulostamiseen.
Esimerkki 2: Rakentajan ylikuormitus
// 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; )
Tuotos
Kun mitään argumenttia ei välitetä: Huoneen pinta-ala = 28,98 Kun (8.2, 6.6) välitetään. Huoneen pinta-ala = 54,12 Kun leveys on vahvistettu arvoon 7.2 ja (8.2) on ylitetty: Huoneen pinta-ala = 59,04
- Kun huone 1 luodaan, ensimmäinen konstruktori kutsutaan. pituus alustetaan
6.9
ja leveys alustetaan4.2
. - Kun huone 2 luodaan, toinen konstruktori kutsutaan. Olemme välittäneet argumentit
8.2
ja6.6
. pituus alustetaan ensimmäiseen argumenttiin8.2
ja leveys alustetaan6.6
. - Kun huone 3 luodaan, kutsutaan kolmas konstruktori. Olemme esittäneet yhden väitteen
8.2
. pituus alustetaan argumenttiin8.2
. leveys alustetaan7.2
oletuksena.
Suositeltu opetusohjelma : C ++ -toiminnon ylikuormitus.