C++中的成員函數指針可以用于存儲和調用類的成員函數。下面是使用成員函數指針的示例:
#include <iostream>
using namespace std;
class MyClass {
public:
void func(int x) {
cout << "func: " << x << endl;
}
};
int main() {
MyClass obj;
// 定義成員函數指針
void (MyClass::*ptr)(int) = &MyClass::func;
// 使用成員函數指針調用函數
(obj.*ptr)(10);
return 0;
}
在上面的示例中,首先定義了一個名為ptr
的成員函數指針,它指向MyClass
類的成員函數func
。然后,使用成員函數指針調用函數時,需要使用成員訪問運算符.*
,并將對象obj
作為第一個參數傳遞給成員函數指針。
輸出:
func: 10
請注意,成員函數指針的類型需要與目標成員函數的類型完全匹配,包括參數類型和返回類型。如果成員函數是const
成員函數,則需要使用const
修飾符來聲明成員函數指針。
還可以使用typedef
來簡化成員函數指針的語法,如下所示:
#include <iostream>
using namespace std;
class MyClass {
public:
void func(int x) {
cout << "func: " << x << endl;
}
};
int main() {
MyClass obj;
typedef void (MyClass::*FuncPtr)(int);
FuncPtr ptr = &MyClass::func;
(obj.*ptr)(10);
return 0;
}