41 / 90

C++ Constructor Overloading

C++ konstruktorlarni qayta yuklash

Konstruktorlar function overloading kabi ortiqcha yuklanishi mumkin.

Haddan tashqari yuklangan konstruktorlar bir xil nomga ega (sinf nomi), lekin argumentlar soni har xil. O'tkazilgan argumentlar soni va turiga qarab, tegishli konstruktor chaqiriladi.

1-misol: Konstruktorning haddan tashqari yuklanishi

example.cpp
// Konstruktorning haddan tashqari yuklanishini ko'rsatish uchun C++ dasturi
#include <iostream>
using namespace std;

class Person {
   private:
    int age;

   public:
    // 1. Argumentsiz konstruktor
    Person() {
        age = 20;
    }

    // 2. Argumentli konstruktor
    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;
}

Chiqish

kod
Person1 Age = 20
Person2 Age = 45

Ushbu dasturda biz bitta o'zgaruvchan yoshga ega bo'lgan Person sinfini yaratdik.

Shuningdek, biz ikkita Person() va Person(int a) konstruktorlarini aniqladik:

  • Ob'ekt person1 yaratilganda, birinchi konstruktor chaqiriladi, chunki biz hech qanday argumentdan o'tmaganmiz. Ushbu konstruktor yoshni 20 ga ishga tushiradi.
  • person2 yaratilganda, ikkinchi konstruktor chaqiriladi, chunki biz 45 ni argument sifatida topshirdik. Bu konstruktor yoshni 45 ga ishga tushiradi.

getAge() funksiyasi yosh qiymatini qaytaradi va biz undan shaxs1 va shaxs2 yoshini chop etish uchun foydalanamiz.

2-misol: Konstruktorning haddan tashqari yuklanishi

example.cpp
// Konstruktorning haddan tashqari yuklanishini ko'rsatish uchun C++ dasturi
#include <iostream>
using namespace std;

class Room {
   private:
    double length;
    double breadth;

   public:
    // 1. Argumentsiz konstruktor
    Room() {
        length = 6.9;
        breadth = 4.2;
    }

    // 2. Ikki argumentli konstruktor
    Room(double l, double b) {
        length = l;
        breadth = b;
    }
    // 3. Bitta argumentli konstruktor
    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 << "\nWhen (8.2, 6.6) is passed." << endl;
    cout << "Area of room = " << room2.calculateArea() << endl;

    cout << "\nWhen breadth is fixed to 7.2 and (8.2) is passed:" << endl;
    cout << "Area of room = " << room3.calculateArea() << endl;

    return 0;
}

Chiqish

kod
When no argument is passed: 
Area of room = 28.98

When (8.2, 6.6) is passed.
Area of room = 54.12

When breadth is fixed to 7.2 and (8.2) is passed:
Area of room = 59.04
  • Xona1 yaratilganda birinchi konstruktor chaqiriladi. uzunlik 6.9 ga ishga tushiriladi va kenglik 4.2 ga ishga tushiriladi.
  • Room2 yaratilganda ikkinchi konstruktor chaqiriladi. Biz 8.2 va 6.6 argumentlaridan o'tdik. uzunlik birinchi 8.2 argumentiga ishga tushiriladi va kenglik 6.6 ga ishga tushiriladi.
  • Room3 yaratilganda uchinchi konstruktor chaqiriladi. Biz bitta 8.2 argumentidan o'tdik. uzunlik 8.2 argumentiga ishga tushiriladi. kenglik sukut bo'yicha 7.2 ga ishga tushiriladi.

Tavsiya etilgan qoʻllanma: C++ Function Overloading .