Dalam tutorial ini, kita akan belajar mengenai beban konstruktor dalam C ++ dengan bantuan contoh.
Pembina boleh dibebani dengan cara yang serupa dengan fungsi yang berlebihan.
Pembina yang terlalu banyak mempunyai nama yang sama (nama kelas) tetapi bilangan argumen yang berbeza. Bergantung pada jumlah dan jenis argumen yang dilalui, konstruktor yang sesuai dipanggil.
Contoh 1: Lebihan konstruktor
// 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; )
Pengeluaran
Orang1 Umur = 20 Orang2 Umur = 45
Dalam program ini, kami telah membuat kelas Person
yang mempunyai usia berubah-ubah tunggal.
Kami juga telah menentukan dua pembina Person()
dan Person(int a)
:
- Semasa objek person1 dibuat, konstruktor pertama dipanggil kerana kita tidak memberikan sebarang hujah. Pembina ini memulakan usia hingga
20
. - Apabila person2 diciptakan, konstruktor kedua dipanggil kerana kita telah lulus
45
sebagai hujah. Pembina ini memulakan usia hingga45
.
Fungsi getAge()
mengembalikan nilai usia, dan kami menggunakannya untuk mencetak usia orang1 dan orang2.
Contoh 2: Lebihan konstruktor
// 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; )
Pengeluaran
Apabila tidak ada hujah yang diluluskan: Luas bilik = 28.98 Bila (8.2, 6.6) dilalui. Luas bilik = 54.12 Apabila lebar tetap ke 7.2 dan (8.2) dilalui: Luas bilik = 59.04
- Apabila room1 dibuat, konstruktor pertama dipanggil. panjang diinisialisasi ke
6.9
dan lebar dimulakan ke4.2
. - Apabila room2 dibuat, konstruktor kedua dipanggil. Kami telah menyampaikan hujah
8.2
dan6.6
. panjang diinisialisasi ke argumen pertama8.2
dan luas dimulakan ke6.6
. - Apabila room3 dibuat, konstruktor ketiga dipanggil. Kami telah melewati satu hujah
8.2
. panjang dimulakan kepada hujah8.2
. luas dimulakan7.2
secara lalai.
Tutorial yang Disyorkan : Fungsi C ++ Overloading.