疑惑:不知用处
解释:
//全局函数
void fun1() {}
void fun2() {}
class D
{
//类成员函数
public:
void fun1() {}
void fun2() {}
};
int main()
{
void(*point1)() = fun1;//指向全局函数,ok
//void(*point3)() = &D::fun1;//普通函数指针,编译错误,因为类型不一样
void (D::*point2)() = &D::fun1;//指向类成员函数指针,ok
cin.get();
//getchar();
//system("pause");
return 0;
}
成员函数指针和普通函数指针之间的不匹配是由于这两种指针在表示上的区别。函数指针存储函数的地址,可以被用来直接调用那个函数。成员函数指针首先必须被绑定在一个对象或者一个指针上,才能得到被调用对象的this 指针,然后才调用指针所指的成员函数。