În acest tutorial, vom afla despre supraîncărcarea constructorului în C ++ cu ajutorul exemplelor.
Constructorii pot fi supraîncărcați în mod similar cu supraîncărcarea funcției.
Constructorii supraîncărcați au același nume (numele clasei), dar numărul diferit de argumente. În funcție de numărul și tipul de argumente transmise, se numește constructorul corespunzător.
Exemplul 1: suprasolicitarea constructorului
// 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; )
Ieșire
Persoană1 Vârstă = 20 Persoană2 Vârstă = 45
În acest program, am creat o clasă Person
care are o singură vârstă variabilă.
De asemenea, am definit doi constructori Person()
și Person(int a)
:
- Când se creează obiectul person1, primul constructor este apelat pentru că nu am trecut niciun argument. Acest constructor inițializează vârsta la
20
. - Când se creează person2, al doilea constructor este apelat de când am trecut
45
ca argument. Acest constructor inițializează vârsta la45
.
Funcția getAge()
returnează valoarea vârstei și o folosim pentru a imprima vârsta person1 și person2.
Exemplul 2: suprasolicitarea constructorului
// 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; )
Ieșire
Când nu este trecut niciun argument: Suprafața camerei = 28,98 Când (8,2, 6,6) este trecut. Suprafața camerei = 54,12 Când lățimea este fixată la 7,2 și (8,2) este trecut: Suprafața camerei = 59,04
- Când se creează camera1, se numește primul constructor. lungimea este inițializată la
6.9
și lățimea este inițializată la4.2
. - Când se creează camera2, se numește al doilea constructor. Am trecut argumentele
8.2
și6.6
. lungimea este inițializată la primul argument8.2
și lățimea este inițializată la6.6
. - Când se creează camera3, se numește al treilea constructor. Am trecut un singur argument
8.2
. lungimea este inițializată la argument8.2
. lățimea este inițializată la valoarea7.2
implicită.
Tutorial recomandat : supraîncărcare funcție C ++.