Supraîncărcare constructor C ++ (cu exemple)

Î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ă Personcare 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 45ca argument. Acest constructor inițializează vârsta la 45.

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ă la 4.2.
  • Când se creează camera2, se numește al doilea constructor. Am trecut argumentele 8.2și 6.6. lungimea este inițializată la primul argument 8.2și lățimea este inițializată la 6.6.
  • Când se creează camera3, se numește al treilea constructor. Am trecut un singur argument 8.2. lungimea este inițializată la argument 8.2. lățimea este inițializată la valoarea 7.2implicită.

Tutorial recomandat : supraîncărcare funcție C ++.

Articole interesante...