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.