Bu öğreticide, örnekler yardımıyla C ++ 'da yapıcı aşırı yüklemesini öğreneceğiz.
Oluşturucular, işlev aşırı yüklemesine benzer şekilde aşırı yüklenebilir.
Aşırı yüklenmiş kurucular aynı ada (sınıfın adı) ancak farklı sayıda bağımsız değişkene sahiptir. Aktarılan argümanların sayısına ve türüne bağlı olarak, karşılık gelen kurucu çağrılır.
Örnek 1: Yapıcıya aşırı yükleme
// 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; )
Çıktı
Kişi1 Yaş = 20 Kişi2 Yaş = 45
Bu programda Person
yaşı tek değişken olan bir sınıf oluşturduk .
Ayrıca iki kurucu tanımladık Person()
ve Person(int a)
:
- Person1 nesnesi oluşturulduğunda, herhangi bir argüman iletmediğimiz için ilk kurucu çağrılır. Bu kurucu, yaşı olarak başlatır
20
. - Person2 oluşturulduğunda,
45
argüman olarak geçtiğimiz için ikinci kurucu çağrılır . Bu kurucu, yaşı olarak başlatır45
.
İşlev getAge()
yaş değerini döndürür ve bunu kişi1 ve kişi2'nin yaşını yazdırmak için kullanırız.
Örnek 2: Yapıcıya aşırı yükleme
// 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; )
Çıktı
Hiçbir argüman iletilmediğinde: Oda alanı = 28.98 (8.2, 6.6) geçildiğinde. Oda alanı = 54.12 Genişlik 7.2'ye sabitlendiğinde ve (8.2) geçildiğinde: Oda alanı = 59.04
- Room1 oluşturulduğunda, ilk kurucu çağrılır. uzunluk olarak başlatılır
6.9
ve genişlik olarak başlatılır4.2
. - Room2 oluşturulduğunda, ikinci kurucu çağrılır. Argümanları geçtik
8.2
ve6.6
. uzunluk ilk bağımsız değişkene8.2
ve genişlik olarak ilklendirilir6.6
. - Room3 oluşturulduğunda, üçüncü kurucu çağrılır. Bir argüman geçtik
8.2
. uzunluk, bağımsız değişken olarak başlatılır8.2
. genişlik7.2
varsayılan olarak başlatılır .
Önerilen Eğitim : C ++ İşlev Aşırı Yüklemesi.