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.
// 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
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:
20 ga ishga tushiradi.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.
// 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
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
6.9 ga ishga tushiriladi va kenglik 4.2 ga ishga tushiriladi.8.2 va 6.6 argumentlaridan o'tdik. uzunlik birinchi 8.2 argumentiga ishga tushiriladi va kenglik 6.6 ga ishga tushiriladi.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 .