0.简介
函数指针大多数用的不多,我觉得啊,但是实际上函数指针很有用,且用起来特别灵活优美。
1.函数指针声明
函数指针声明方式有点怪,一般就是如下。
void print()
{
cout << "hello" << endl;
}
int main()
{
void(*fun_ptr)() = print;//void为返回类型,第二个括号为参数列表,第一个括号是变量名
fun_ptr();
return 0;
}
在实际赋值的时候和普通数值指针没区别,使用的时候以函数调用的方式使用即可。
带参数的如下写法。
void print(int a)
{
cout <<a<< endl;
}
int main()
{
void(*fun_ptr)(int) = print;
fun_ptr(10);
return 0;
}
2.函数指针的类型定义
一般时候,我们可能不想到处写比较长的类型,所需需要一个我们自定义类型来表示某种函数指针类型,如下。
void print(int a)
{
cout << a<< endl;
}
int main()
{
typedef void(*fun_ptr)(int) ;
fun_ptr fun = print;
fun(10);
return 0;
}
换成C++11的写法如下
void print(int a)
{
cout << a<< endl;
}
int main()
{
using fun_ptr = void(*)(int) ;
fun_ptr fun = print;
fun(10);
return 0;
}
还有利用STL的function一种写法
void print(int a)
{
cout << a<< endl;
}
int main()
{
using fun_ptr = function<void(int)>;
fun_ptr fun = print;
fun(10);
return 0;
}