I denne opplæringen vil vi lære om overbelastning av konstruktører i C ++ ved hjelp av eksempler.
Konstruktører kan overbelastes på samme måte som funksjonsoverbelastning.
Overbelastede konstruktører har samme navn (klassens navn), men det forskjellige antallet argumenter. Avhengig av antall og type argumenter som er sendt, blir den tilsvarende konstruktøren kalt.
Eksempel 1: Overbelastning av 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; )
Produksjon
Person1 Alder = 20 Person2 Alder = 45
I dette programmet har vi opprettet en klasse Person
som har en enkelt variabel alder.
Vi har også definert to konstruktører Person()
og Person(int a)
:
- Når objektet person1 er opprettet, kalles den første konstruktøren fordi vi ikke har bestått noen argumenter. Denne konstruktøren initialiserer alderen til
20
. - Når person2 opprettes, kalles den andre konstruktøren siden vi har passert
45
som et argument. Denne konstruktøren initialiserer alderen til45
.
Funksjonen getAge()
returnerer verdien av alder, og vi bruker den til å skrive ut alderen til person1 og person2.
Eksempel 2: Overbelastning av 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; )
Produksjon
Når ingen argumenter blir bestått: Romareal = 28,98 Når (8,2, 6,6) blir bestått. Romareal = 54,12 Når bredden er fast til 7,2 og (8,2) passeres: Romareal = 59,04
- Når rom1 er opprettet, kalles den første konstruktøren. lengden initialiseres til
6.9
og bredden initialiseres til4.2
. - Når rom2 er opprettet, kalles den andre konstruktøren. Vi har bestått argumentene
8.2
og6.6
. lengden initialiseres til det første argumentet8.2
og bredden initialiseres til6.6
. - Når rom3 er opprettet, kalles den tredje konstruktøren. Vi har bestått ett argument
8.2
. lengden initialiseres til argumentet8.2
. bredden er initialisert til7.2
standard.
Anbefalt opplæring : C ++ Funksjon Overbelastning.