C ++ konstruktøroverbelastning (med eksempler)

I denne vejledning lærer vi om konstruktion af overbelastning i C ++ ved hjælp af eksempler.

Konstruktører kan overbelastes på samme måde som funktionsoverbelastning.

Overbelastede konstruktører har samme navn (klassens navn), men det forskellige antal argumenter. Afhængig af antallet og typen af ​​argumenter, der sendes, kaldes den tilsvarende konstruktør.

Eksempel 1: Overbelastning af konstruktør

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

Produktion

 Person1 Alder = 20 Person2 Alder = 45

I dette program har vi oprettet en klasse, Personder har en enkelt variabel alder.

Vi har også defineret to konstruktører Person()og Person(int a):

  • Når objektet person1 oprettes, kaldes den første konstruktør, fordi vi ikke har bestået noget argument. Denne konstruktør initialiserer alder til 20.
  • Når person2 oprettes, kaldes den anden konstruktør, da vi har bestået 45som et argument. Denne konstruktør initialiserer alder til 45.

Funktionen getAge()returnerer værdien af ​​alder, og vi bruger den til at udskrive alder på person1 og person2.

Eksempel 2: Overbelastning af konstruktør

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

Produktion

Når der ikke gives noget argument: Rumareal = 28,98 Når (8,2, 6,6) videregives. Rumareal = 54,12 Når bredden er fastgjort til 7,2 og (8,2) passeres: Rumareal = 59,04
  • Når rum1 oprettes, kaldes den første konstruktør. længden initialiseres til 6.9og bredden initialiseres til 4.2.
  • Når rum2 oprettes, kaldes den anden konstruktør. Vi har bestået argumenterne 8.2og 6.6. længde initialiseres til det første argument, 8.2og bredden initialiseres til 6.6.
  • Når rum3 oprettes, kaldes den tredje konstruktør. Vi har bestået et argument 8.2. længde initialiseres til argumentet 8.2. bredde initialiseres 7.2som standard.

Anbefalet vejledning : C ++ Funktion Overbelastning.

Interessante artikler...