语法背景
函数的地址就是函数名,使用函数指针可以实现返回值类型相同,参数相同,函数名不同的函数的调用,比如说:
#include <iostream>
void add(int a,int b)
{
std::cout<<"相加操作"<<std::endl;
}
void sub(int a,int b)
{
std::cout<<"相减操作"<<std::endl;
}
void (*fun)(int a,int b);
int main()
{
int a=3;
int b=4;
fun = add;
fun(a,b);
system("pause");
return 0;
}
代码结果是

以上代码需要声明fun指针,并且使用时需要声明中的fun函数名指针,且fun不能更改。auto关键字可以指代未知类型的变量,也可以是指针,可以直接使用auto关键字,赋值函数名称,直接实现函数指针,只不过这种代码可读性会降低。
auto关键字实现
#include <iostream>
void add(int a,int b)
{
std::cout<<"相加操作"<<std::endl;
}
void sub(int a,int b)
{
std::cout<<"相减操作"<<std::endl;
}
int main()
{
int a=3;
int b=4;
auto func = add;
func(a,b);
system("pause");
return 0;
}
代码结果是











