In deze zelfstudie leren we met behulp van voorbeelden over overbelasting van constructors in C ++.
Constructeurs kunnen op dezelfde manier worden overbelast als functie-overbelasting.
Overbelaste constructors hebben dezelfde naam (naam van de klasse) maar een verschillend aantal argumenten. Afhankelijk van het aantal en het type doorgegeven argumenten, wordt de corresponderende constructor aangeroepen.
Voorbeeld 1: Overbelasting constructor
// 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; )
Uitvoer
Leeftijd persoon1 = 20 Leeftijd persoon2 = 45
In dit programma hebben we een klas gemaakt Person
met een enkele variabele leeftijd.
We hebben ook twee constructeurs gedefinieerd Person()
en Person(int a)
:
- Wanneer het object person1 wordt gemaakt, wordt de eerste constructor aangeroepen omdat we geen enkel argument hebben doorgegeven. Deze constructor initialiseert age naar
20
. - Wanneer person2 wordt gemaakt, wordt de tweede constructor aangeroepen omdat we
45
als argument zijn doorgegeven . Deze constructor initialiseert age naar45
.
De functie getAge()
retourneert de waarde van age, en we gebruiken deze om de leeftijd van person1 en person2 af te drukken.
Voorbeeld 2: Overbelasting constructeur
// 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; )
Uitvoer
Als er geen argument is doorgegeven: Area of room = 28.98 Wanneer (8.2, 6.6) is gepasseerd. Ruimte van kamer = 54.12 Wanneer breedte is vastgesteld op 7.2 en (8.2) is gepasseerd: Oppervlakte van ruimte = 59.04
- Als room1 is gemaakt, wordt de eerste constructor aangeroepen. lengte wordt geïnitialiseerd naar
6.9
en breedte wordt geïnitialiseerd naar4.2
. - Als room2 is gemaakt, wordt de tweede constructor aangeroepen. We zijn geslaagd voor de argumenten
8.2
en6.6
. length wordt geïnitialiseerd naar het eerste argument8.2
en breedte wordt geïnitialiseerd naar6.6
. - Als room3 is gemaakt, wordt de derde constructor aangeroepen. We hebben een argument aangenomen
8.2
. length wordt geïnitialiseerd voor het argument8.2
. breedte is standaard geïnitialiseerd7.2
.
Aanbevolen zelfstudie : overbelasting van C ++ -functie.