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 kelasMyClass
yang mengembalikanvoid
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 olehfunctionPointer
pada objekmyObject
.
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.