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, Person
der 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
45
som et argument. Denne konstruktør initialiserer alder til45
.
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.9
og bredden initialiseres til4.2
. - Når rum2 oprettes, kaldes den anden konstruktør. Vi har bestået argumenterne
8.2
og6.6
. længde initialiseres til det første argument,8.2
og bredden initialiseres til6.6
. - Når rum3 oprettes, kaldes den tredje konstruktør. Vi har bestået et argument
8.2
. længde initialiseres til argumentet8.2
. bredde initialiseres7.2
som standard.
Anbefalet vejledning : C ++ Funktion Overbelastning.