这里先介绍一般的函数指针,后序再介绍其他的
函数指针是C++中非常重要的内容,同样的,也是C++难点之一
指针我们都知道,一般我们所用到的都是基本数据类型指针、结构体类型指针、数组指针、对象指针等等,还有一种指针应用广泛,很多地方不可或缺,那便是函数指针,下面介绍的是比较简单点的函数指针
#include<iostream>
using namespace std;
void func(){
cout<<"调用函数func()"<<endl;
}
void set(int a){
int t=a;
cout<<"调用函数set(),t="<<a<<endl;
}
int get(char op){
int a=10;
if(op=='Y')
return a;
else
return -1;
}
int main()
{
void (*pc)();
pc=func; 也可以pc=&func;
(*pc)();
void (*p)(int);
p=set; 也可以p=&set;
(*p)(5);
int x,y;
int (*g)(char);
g=get; 也可以g=&get;
x=(*g)('Y');
y=(*g)('N');
cout<<"x="<<x<<" y="<<y<<endl;
return 0;
}
结果为:
调用函数func()
调用函数set(),t=5
x=10 y=-1
上述给出了基本的函数指针的使用,定义的格式为:
函数返回值类型(*指针名称)(参数列表参数类型),这是最简单的,当然复杂的也只是在这个基础上变化,如果理解清了函数指针的基本构造不难理解更为复杂的函数指针
这里补充点typedef在函数指针中的使用
#include<iostream>
using namespace std;
void func(){
cout<<"调用函数func()"<<endl;
}
typedef void(*pf)();
int main()
{
void (*p)();
*p=func;
(*p)();
pf a;
a=func;
pf b=func;
(*a)();
(*b)();
return 0;
}
结果为:
调用函数func()
调用函数func()
调用函数func()
很明显此例中typedef定义了一个无参数返回类型为void的函数指针类型,这样简化了后面这种函数指针的定义,更加容易理解,当有非常复杂类型的函数指针等内容理解起来就更加方便容易,而且这是一种新的类型可以多次定义这种类型的函数指针变量