C++ Call Class Member Function Pointer

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

Memanggil Fungsi Anggota Kelas Menggunakan Pointer ke Fungsi di C++

Pointer ke fungsi adalah konsep penting dalam C++ yang memungkinkan kita untuk menyimpan alamat fungsi dalam variabel. Hal ini memberikan fleksibilitas dalam memanggil fungsi, terutama dalam konteks fungsi anggota kelas.

Berikut adalah bagaimana Anda dapat memanggil fungsi anggota kelas menggunakan pointer ke fungsi:

1. Deklarasikan Pointer ke Fungsi

Anda perlu mendeklarasikan pointer ke fungsi yang sesuai dengan jenis fungsi anggota kelas yang ingin Anda tunjuk. Syntax untuk mendeklarasikan pointer ke fungsi anggota adalah:

return_type (ClassName::*function_pointer)(parameter_list);

Contoh:

class MyClass {
public:
  void myFunction(int x) {
    std::cout << "My function called with: " << x << std::endl;
  }
};

// Deklarasi pointer ke fungsi
void (MyClass::*funcPtr)(int) = &MyClass::myFunction;

2. Inisialisasi Pointer ke Fungsi

Setelah Anda mendeklarasikan pointer ke fungsi, Anda perlu menginisialisasikannya dengan alamat fungsi anggota kelas. Gunakan operator alamat (&) untuk mengambil alamat fungsi anggota.

Contoh:

// Inisialisasi pointer ke fungsi
funcPtr = &MyClass::myFunction; 

3. Memanggil Fungsi Anggota

Untuk memanggil fungsi anggota menggunakan pointer ke fungsi, gunakan operator ->* atau .*.

Contoh:

MyClass myObject;

// Panggil fungsi menggunakan operator ->*
(myObject.*funcPtr)(5); // Output: My function called with: 5

// Atau, panggil fungsi menggunakan operator .* 
(*funcPtr)(myObject, 5); // Output: My function called with: 5

Penjelasan:

  • ->* digunakan ketika Anda memanggil fungsi anggota melalui pointer objek.
  • .* digunakan ketika Anda memanggil fungsi anggota melalui referensi objek.

Keuntungan Menggunakan Pointer ke Fungsi

  • Fleksibel: Anda dapat dengan mudah mengubah fungsi yang dipanggil tanpa mengubah kode yang memanggil.
  • Polimorfisme: Pointer ke fungsi dapat digunakan untuk menunjuk ke fungsi virtual, memungkinkan Anda untuk memilih fungsi yang tepat pada runtime.
  • Performa: Memanggil fungsi menggunakan pointer ke fungsi biasanya lebih cepat daripada menggunakan if atau switch statement.

Contoh Lengkap

#include 

class MyClass {
public:
  void myFunction(int x) {
    std::cout << "My function called with: " << x << std::endl;
  }
  void anotherFunction(int y) {
    std::cout << "Another function called with: " << y << std::endl;
  }
};

int main() {
  MyClass myObject;

  // Deklarasi pointer ke fungsi
  void (MyClass::*funcPtr)(int) = &MyClass::myFunction;

  // Panggil myFunction
  (myObject.*funcPtr)(5);

  // Ubah pointer ke fungsi untuk menunjuk ke anotherFunction
  funcPtr = &MyClass::anotherFunction; 

  // Panggil anotherFunction
  (myObject.*funcPtr)(10);

  return 0;
}

Output:

My function called with: 5
Another function called with: 10

Kesimpulan:

Pointer ke fungsi di C++ adalah alat yang ampuh untuk membuat kode Anda lebih fleksibel dan efisien. Dengan menggunakan pointer ke fungsi, Anda dapat memanggil fungsi anggota kelas secara dinamis dan meningkatkan kemampuan polimorfisme program Anda.

Latest Posts


Featured Posts