C++ 类成员函数的函数指针
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