C++ 類成員函數的函數指針
調用類中非靜態成員函數的時候,使用的是類名::函數名;而不是實例名::函數名。
class A
{
public:
static void StaticMethod(){cout<<"static"<<endl;} //static member 靜態函數
void nonStaticMethod() {cout<<"nonstatic"<<endl;} //nonstatic member 普通成員函數
virtual void virtualMethod(){cout<<"virtual"<<endl;}; //virtual member 虛函數
};
int main()
{
A a;
//static成員函數,取得的是該函數在內存中的實際地址,而且因為static成員是全局的,所以不能用A::限定符
void (*ptrStatic)() = &A::staticMethod;
//nonStaticMethod 成員函數 取得的是該函數在內存中的實際地址
void (A::*ptrMethod)() = &A::nonStaticMethod;
//虛函數取得的是虛函數表中的偏移值,這樣可以保證能過指針調用時同樣的多態效果
void (A::*ptrVirtual)() = &A::virtualMethod;
//函數指針的使用方式
ptrStatic();
(a.*ptrMethod)();
(a.*ptrVirtual)();
}
感謝: https://blog.csdn.net/afei__/article/details/81985937
