C++ Base Class Constructor Initialization List

2 min read Jul 01, 2024
C++ Base Class Constructor Initialization List

C++ Base Class Constructor Initialization List

Dalam pemrograman C++, initialization list digunakan untuk menginisialisasi anggota data kelas, terutama ketika kelas tersebut mewarisi dari kelas lain. Initialization list ditempatkan di dalam tubuh konstruktor kelas turunan, sebelum tubuh konstruktor dijalankan.

Berikut format umum dari initialization list:

class DerivedClass : public BaseClass {
public:
    DerivedClass(int data) : BaseClass(data), derivedData(data * 2) {
        // Tubuh konstruktor
    }

private:
    int derivedData;
};

Kenapa Perlu Initialization List?

  • Urutan Inisialisasi: Initialization list memastikan bahwa anggota data base class diinisialisasi sebelum anggota data kelas turunan. Ini penting untuk menghindari masalah inisialisasi yang tidak terdefinisi dan perilaku program yang tidak terduga.
  • Konstruktor Base Class: Initialization list memungkinkan Anda untuk secara eksplisit memanggil konstruktor base class dengan argumen yang tepat.
  • Member References: Initialization list diperlukan untuk menginisialisasi anggota data yang merupakan reference atau const.

Contoh Penggunaan

#include 

class BaseClass {
public:
    BaseClass(int x) : data(x) {
        std::cout << "Base class constructor called" << std::endl;
    }

private:
    int data;
};

class DerivedClass : public BaseClass {
public:
    DerivedClass(int data) : BaseClass(data), derivedData(data * 2) {
        std::cout << "Derived class constructor called" << std::endl;
    }

private:
    int derivedData;
};

int main() {
    DerivedClass obj(5);

    return 0;
}

Dalam contoh di atas, konstruktor DerivedClass menggunakan initialization list untuk memanggil konstruktor BaseClass dengan argumen data. Setelah itu, anggota data derivedData dari DerivedClass diinisialisasi.

Kesimpulan

Initialization list adalah bagian penting dari pemrograman C++ yang memungkinkan Anda untuk mengontrol inisialisasi objek, terutama dalam konteks pewarisan kelas. Penggunaan initialization list yang tepat dapat meningkatkan keterbacaan kode dan menghindari kesalahan yang tidak terduga.