C++ Call Base Class Constructor In Initializer List

4 min read Jul 01, 2024
C++ Call Base Class Constructor In Initializer List

Memanggil Konstruktor Kelas Induk di Inisialisasi Daftar C++

Dalam pemrograman berorientasi objek dengan C++, konstruktor kelas turunan secara otomatis memanggil konstruktor kelas induknya. Namun, terkadang kita perlu mengontrol konstruktor mana yang dipanggil dari kelas induk atau memberikan argumen khusus untuknya. Inilah mengapa memahami cara memanggil konstruktor kelas induk di inisialisasi daftar menjadi penting.

Inisialisasi Daftar dan Konstruktor

Inisialisasi daftar adalah mekanisme dalam C++ yang memungkinkan kita untuk menginisialisasi anggota data dari sebuah kelas dalam deklarasi konstruktornya. Daftar ini ditulis di dalam kurung kurawal setelah nama konstruktor.

Sebagai contoh:

class Base {
public:
    int x;
    Base(int value) : x(value) {} 
};

class Derived : public Base {
public:
    int y;
    Derived(int value1, int value2) : Base(value1), y(value2) {} 
};

Dalam contoh ini, konstruktor Derived memanggil konstruktor Base dengan argumen value1 melalui inisialisasi daftar.

Mengapa Memanggil Konstruktor Kelas Induk?

Ada beberapa alasan mengapa Anda mungkin perlu memanggil konstruktor kelas induk secara eksplisit:

  1. Inisialisasi Anggota Data: Jika kelas induk memiliki anggota data yang perlu diinisialisasi sebelum konstruktor kelas turunan dijalankan, memanggil konstruktor kelas induk secara eksplisit dengan inisialisasi daftar memungkinkan kita untuk melakukan hal itu.

  2. Memilih Konstruktor Kelas Induk: Jika kelas induk memiliki beberapa konstruktor, kita dapat memilih konstruktor yang tepat untuk kelas induk dengan memanggilnya secara eksplisit dalam inisialisasi daftar.

  3. Passing Argumen: Kita dapat memberikan argumen khusus ke konstruktor kelas induk melalui inisialisasi daftar.

Contoh Implementasi

Berikut ini contoh bagaimana memanggil konstruktor kelas induk dengan inisialisasi daftar:

#include 

class Shape {
public:
  int width;
  int height;

  Shape(int w, int h) : width(w), height(h) { 
    std::cout << "Konstruktor Shape dipanggil.\n";
  }
};

class Rectangle : public Shape {
public:
  Rectangle(int w, int h) : Shape(w, h) {
    std::cout << "Konstruktor Rectangle dipanggil.\n";
  }
};

int main() {
  Rectangle rect(5, 10); 
  return 0;
}

Dalam contoh di atas, konstruktor Rectangle secara eksplisit memanggil konstruktor Shape dengan argumen w dan h. Ini memastikan bahwa width dan height dari objek Rectangle diinisialisasi sebelum konstruktor Rectangle selesai.

Kesimpulan

Memanggil konstruktor kelas induk di inisialisasi daftar adalah teknik penting dalam pemrograman C++ untuk mengontrol inisialisasi objek dan mengatur hierarki kelas. Dengan memahami konsep ini, Anda dapat membangun kelas yang lebih kompleks dan terstruktur dengan baik.

Featured Posts