Dalam tutorial ini, kita akan belajar tentang konstruktor overloading dalam C ++ dengan bantuan contoh.
Konstruktor dapat kelebihan beban dengan cara yang sama seperti kelebihan beban fungsi.
Konstruktor yang kelebihan beban memiliki nama yang sama (nama kelas) tetapi jumlah argumennya berbeda. Bergantung pada jumlah dan jenis argumen yang diteruskan, konstruktor yang sesuai akan dipanggil.
Contoh 1: Constructor overloading
// 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; )
Keluaran
Orang1 Usia = 20 Orang2 Usia = 45
Dalam program ini, kami telah membuat kelas Person
yang memiliki usia variabel tunggal.
Kami juga telah mendefinisikan dua konstruktor Person()
dan Person(int a)
:
- Ketika objek person1 dibuat, konstruktor pertama dipanggil karena kita belum memberikan argumen apa pun. Konstruktor ini menginisialisasi age menjadi
20
. - Ketika person2 dibuat, konstruktor kedua dipanggil karena kita telah memberikan
45
argumen. Konstruktor ini menginisialisasi age menjadi45
.
Fungsi getAge()
mengembalikan nilai usia, dan kami menggunakannya untuk mencetak usia person1 dan person2.
Contoh 2: Constructor overloading
// 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; )
Keluaran
Ketika tidak ada argumen yang diberikan: Luas ruangan = 28,98 Ketika (8,2, 6,6) diloloskan. Luas ruangan = 54,12 Jika lebarnya ditetapkan menjadi 7,2 dan (8,2) dilewati: Luas ruangan = 59,04
- Ketika ruang1 dibuat, konstruktor pertama dipanggil. length diinisialisasi
6.9
dan luasnya diinisialisasi4.2
. - Ketika ruang2 dibuat, konstruktor kedua dipanggil. Kami telah melewati argumen
8.2
dan6.6
. length diinisialisasi ke argumen pertama8.2
dan luasnya diinisialisasi6.6
. - Ketika room3 dibuat, konstruktor ketiga dipanggil. Kami telah melewati satu argumen
8.2
. length diinisialisasi ke argumen8.2
. luasnya diinisialisasi ke7.2
secara default.
Tutorial yang Disarankan : Overloading Fungsi C ++.