C++ Call Super Constructor In Body

4 min read Jul 01, 2024
C++ Call Super Constructor In Body

Memanggil Konstruktor Super dalam Tubuh Konstruktor Turunan di C++

Dalam pemrograman berorientasi objek, konsep pewarisan memungkinkan kelas turunan untuk mewarisi atribut dan metode dari kelas induknya. Kadang-kadang, konstruktor kelas turunan perlu menginisialisasi anggota data yang diwariskan dari kelas induknya. Ini dapat dicapai dengan memanggil konstruktor super kelas dari dalam tubuh konstruktor kelas turunan.

Bagaimana Memanggil Konstruktor Super?

Anda dapat memanggil konstruktor super dengan menggunakan sintaks super(). Di C++, Anda perlu menyertakan inisialisasi anggota data dari kelas turunan sebelum tubuh konstruktornya. Ini adalah sintaks umum:

class Base {
public:
  Base(int value) : data(value) {
    // Inisialisasi lainnya
  }
private:
  int data;
};

class Derived : public Base {
public:
  Derived(int value1, int value2) : Base(value1), data2(value2) {
    // Inisialisasi lainnya
  }
private:
  int data2;
};

Dalam contoh di atas, konstruktor kelas Derived memanggil konstruktor kelas Base dengan menggunakan Base(value1) untuk menginisialisasi data yang diwarisi.

Penjelasan:

  • Base(value1): Ini memanggil konstruktor kelas Base dengan nilai value1.
  • data2(value2): Ini menginisialisasi anggota data data2 dari kelas Derived.

Penting:

  • Inisialisasi anggota data: Inisialisasi anggota data harus dilakukan sebelum tubuh konstruktor kelas turunan.
  • Penempatan super(): Panggilan super() harus diletakkan di daftar inisialisasi anggota data.
  • Jika tidak ada konstruktor super yang eksplisit: Jika kelas induk tidak memiliki konstruktor yang eksplisit, kompilator akan secara otomatis memanggil konstruktor default kelas induk.

Kapan Anda Membutuhkannya?

  • Inisialisasi anggota data yang diwariskan: Jika kelas induk memiliki anggota data yang memerlukan inisialisasi khusus, Anda harus memanggil konstruktor super untuk menginisialisasi anggota tersebut dengan benar.
  • Penggunaan kembali kode: Memanggil konstruktor super memungkinkan Anda untuk menggunakan kembali kode dari kelas induk, meningkatkan efisiensi dan mengurangi duplikasi kode.

Contoh:

class Shape {
public:
  Shape(int width, int height) : width(width), height(height) {}
  int getWidth() const { return width; }
  int getHeight() const { return height; }
protected:
  int width;
  int height;
};

class Rectangle : public Shape {
public:
  Rectangle(int width, int height) : Shape(width, height) {}
  int getArea() const { return getWidth() * getHeight(); }
};

int main() {
  Rectangle rect(5, 10);
  cout << "Luas persegi panjang: " << rect.getArea() << endl;
  return 0;
}

Contoh ini menunjukkan bagaimana konstruktor Rectangle memanggil konstruktor Shape untuk menginisialisasi anggota data width dan height yang diwariskan.

Kesimpulan:

Memanggil konstruktor super adalah teknik penting dalam pemrograman berorientasi objek yang memungkinkan Anda untuk menginisialisasi anggota data yang diwariskan dengan benar dan meningkatkan reusability kode. Pastikan untuk memahami aturan sintaks dan kapan Anda membutuhkan konstruktor super untuk membuat kode C++ yang lebih efisien dan terstruktur dengan baik.

Latest Posts