Function Pointer trong C++

Có 2 loại function pointer:

  • Pointer to ordinary C functions và static member functions (C++)
  • Pointer to non-static member functions (C++)

Chú ý: 2 kiểu pointer này không thể tương thích với nhau.

Define

// C
typedef int (*ptr2Function)(float, int);
// C++
typedef int (TClass::*ptr2Member)(float, int);
typedef int (TClass::*ptr2MemberConst)(float, int) const;

Assign function address

// C
ptr2Function aFuncPtr = NULL;
aFuncPtr = MyFunc;    // short form
aFuncPtr = &MyFunc: // correct form
// C++
ptr2Member aMemPtr = NULL;
ptr2MemberConst aMemConstPtr = NULL;

aMemConstPtr = &TClass::MemberConstFunc; // correct form
aMemPtr      = &TClass::MemberFunc;      // aMemPtr can also pointer to MemberConstFunc

AnVietTrung 15-05-2016