C++ Call Member Function Pointer

3 min read Jul 01, 2024
C++ Call Member Function Pointer

Memanggil Fungsi Anggota dengan Pointer Fungsi di C++

Pointer fungsi anggota adalah pointer yang menunjuk ke sebuah fungsi anggota dari sebuah kelas. Pointer ini dapat digunakan untuk memanggil fungsi anggota secara dinamis, yang berarti kita dapat menentukan fungsi mana yang ingin dipanggil saat program dijalankan.

Deklarasi Pointer Fungsi Anggota

Deklarasi pointer fungsi anggota menyerupai deklarasi pointer fungsi biasa, tetapi dengan tambahan operator :: untuk menentukan kelas yang dikaitkan.

class MyClass {
public:
    void myFunction();
};

// Deklarasi pointer fungsi anggota
void (MyClass::*functionPointer)(); 

Penjelasan:

  • void (MyClass::*functionPointer)(): Deklarasi pointer fungsi anggota yang menunjuk ke sebuah fungsi anggota dari kelas MyClass yang mengembalikan void dan tidak menerima argumen.

Menginisialisasi Pointer Fungsi Anggota

Anda dapat menginisialisasi pointer fungsi anggota dengan alamat fungsi anggota menggunakan operator &:

functionPointer = &MyClass::myFunction;

Memanggil Fungsi Anggota dengan Pointer Fungsi

Untuk memanggil fungsi anggota menggunakan pointer fungsi anggota, kita perlu menggunakan operator ->*:

MyClass myObject;

// Panggil fungsi anggota melalui pointer fungsi
(myObject.*functionPointer)();

Penjelasan:

  • (myObject.*functionPointer)(): Memanggil fungsi anggota yang diacu oleh functionPointer pada objek myObject.

Contoh Penggunaan

Berikut contoh lengkap penggunaan pointer fungsi anggota:

#include 

class MyClass {
public:
    void myFunction1() {
        std::cout << "Fungsi 1 dipanggil\n";
    }

    void myFunction2() {
        std::cout << "Fungsi 2 dipanggil\n";
    }
};

int main() {
    MyClass myObject;

    // Deklarasi pointer fungsi anggota
    void (MyClass::*functionPointer)();

    // Inisialisasi pointer fungsi anggota dengan alamat fungsi myFunction1
    functionPointer = &MyClass::myFunction1;

    // Panggil myFunction1 melalui pointer fungsi
    (myObject.*functionPointer)();

    // Ubah pointer fungsi ke myFunction2
    functionPointer = &MyClass::myFunction2;

    // Panggil myFunction2 melalui pointer fungsi
    (myObject.*functionPointer)();

    return 0;
}

Output program:

Fungsi 1 dipanggil
Fungsi 2 dipanggil

Keuntungan Menggunakan Pointer Fungsi Anggota

  • Fleksibelitas: Anda dapat memanggil fungsi anggota yang berbeda secara dinamis berdasarkan kebutuhan program.
  • Penggunaan dengan array atau list: Anda dapat menyimpan pointer fungsi anggota dalam array atau list untuk memanggil beberapa fungsi anggota secara berurutan.
  • Kode yang lebih ringkas: Anda dapat menggunakan pointer fungsi anggota untuk menghindari penulisan kode berulang saat memanggil fungsi anggota yang sama.

Kesimpulan

Pointer fungsi anggota memberikan cara yang kuat dan fleksibel untuk memanggil fungsi anggota di C++. Keuntungannya termasuk fleksibilitas, penggunaan dengan struktur data lainnya, dan kode yang lebih ringkas.

Latest Posts