C ++ Constructor Overloading (met voorbeelden)

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 Personmet 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 45als argument zijn doorgegeven . Deze constructor initialiseert age naar 45.

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.9en breedte wordt geïnitialiseerd naar 4.2.
  • Als room2 is gemaakt, wordt de tweede constructor aangeroepen. We zijn geslaagd voor de argumenten 8.2en 6.6. length wordt geïnitialiseerd naar het eerste argument 8.2en breedte wordt geïnitialiseerd naar 6.6.
  • Als room3 is gemaakt, wordt de derde constructor aangeroepen. We hebben een argument aangenomen 8.2. length wordt geïnitialiseerd voor het argument 8.2. breedte is standaard geïnitialiseerd 7.2.

Aanbevolen zelfstudie : overbelasting van C ++ -functie.

Interessante artikelen...