Beban Konstruktor C ++ (Dengan Contoh)

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 Personyang 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 45sebagai hujah. Pembina ini memulakan usia hingga 45.

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.9dan lebar dimulakan ke 4.2.
  • Apabila room2 dibuat, konstruktor kedua dipanggil. Kami telah menyampaikan hujah 8.2dan 6.6. panjang diinisialisasi ke argumen pertama 8.2dan luas dimulakan ke 6.6.
  • Apabila room3 dibuat, konstruktor ketiga dipanggil. Kami telah melewati satu hujah 8.2. panjang dimulakan kepada hujah 8.2. luas dimulakan 7.2secara lalai.

Tutorial yang Disyorkan : Fungsi C ++ Overloading.

Artikel menarik...