首先,关于声明普通函数指针
返回值类型 (*指针名)(参数);
如:int (*p) (int); //声明一个指向返回值为int,参数类型为int的函数指针
更常用的声明方法 typedef int(*p)(int); //声明了一个函数指针类型p
指向类函数指针声明:
关于指向类的函数指针,都要加上类的作用域
如: int (A::*p)(int); //表示指向A类返回值为int,参数类型为int的函数指针
#include<iostream>
扫描二维码关注公众号,回复:
2461236 查看本文章
using namespacestd;
class A
{
public:
int speak(int mm,int nn){
return (mm-nn);
};
};
int main()
{
int b=9;
int c =0;
int (A::*pmf)(int ,int);//指针的声明
pmf = &A::speak;//指针的赋值,关于&,大神们的解释是类函数名不会隐式转换,这里不做深究
A a; //生成对象
cout<<(a.*pmf)(b,c);//在使用指向类的函数指针时,一定要有对象
return0;
}
ps:以上代码风格上十分不好,只关注思想即可