C ++ konstruktöröverbelastning (med exempel)

I den här handledningen lär vi oss om konstruktionsöverbelastning i C ++ med hjälp av exempel.

Konstruktörer kan överbelastas på liknande sätt som funktionsöverbelastning.

Överbelastade konstruktörer har samma namn (klassens namn) men olika antal argument. Beroende på antalet och typen av skickade argument anropas motsvarande konstruktör.

Exempel 1: Överbelastning 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; )

Produktion

 Person1 Ålder = 20 Person2 Ålder = 45

I det här programmet har vi skapat en klass Personsom har en enda variabel ålder.

Vi har också definierat två konstruktörer Person()och Person(int a):

  • När objektet person1 skapas anropas den första konstruktorn för att vi inte har klarat något argument. Denna konstruktör initialiserar ålder till 20.
  • När person2 skapas anropas den andra konstruktören eftersom vi har passerat 45som ett argument. Denna konstruktör initialiserar ålder till 45.

Funktionen getAge()returnerar åldersvärdet och vi använder det för att skriva ut åldern för person1 och person2.

Exempel 2: Konstruktionsöverbelastning

 // 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 inget argument skickas: Rumsareal = 28,98 När (8,2, 6,6) passeras. Rumets yta = 54,12 När bredden är fastställd till 7,2 och (8,2) passeras: Rumets yta = 59,04
  • När rum1 skapas anropas den första konstruktören. längden initialiseras till 6.9och bredden initialiseras till 4.2.
  • När rum2 skapas anropas den andra konstruktören. Vi har klarat av argumenten 8.2och 6.6. längden initialiseras till det första argumentet 8.2och bredden initialiseras till 6.6.
  • När rum3 skapas anropas den tredje konstruktören. Vi har klarat ett argument 8.2. längden initialiseras till argumentet 8.2. bredd initialiseras som 7.2standard.

Rekommenderad handledning : C ++ Funktionsöverbelastning.

Intressanta artiklar...