【C++】函数指针简介
文章目录
简介
本文为《C++ Primer》第五版关于函数指针的使用的读书笔记
!!!本文的源码均来自于《C++ Primer》第五版!!!(可能会稍作修改)
The source codes in this article are all from C++ Primer, The Fifth Edition
1. 函数指针
函数指针(Function Pointer):指向某种特定类型函数的指针,注意,特定类型精细到返回值类型和参数类型必须一致
int Square(const int& number)
{
return number * number;
}
int main()
{
// 注意,如果Square为内联函数,即有inline关键字,函数指针不需要加inline
int (*fp)(const int& number); // 声明一个函数指针
fp = □ // 让指针指向一个函数,常规方法
cout << (*fp)(2) << endl; // 调用函数指针,常规方法
fp = Square; // 让指针指向一个函数,隐式转换方法
cout << fp(2) << endl; // 调用函数指针,隐式转换方法
}
2. 将函数指针作为参数传入函数
函数指针作参数:这个是个很实用的技巧,这允许我们将函数作为参数传入其他函数
假设我们有一个Square函数如下:
// 计算一个数的平方
int Square(const int& number)
{
return number * number;
}
现在我们需要写一个CalculateSqrSum来计算两个数平方之和
- 常规写法:传入函数指针
// 各计算两数的平方,随后相加
int CalculateSqrSum(const int& a, const int& b, int (*mySqr)(const int& number))
{
return mySqr(a) + mySqr(b);
}
- 省事写法:利用隐式转换,直接传入函数
// 各计算两数的平方,随后相加
int CalculateSqrSum(const int& a, const int& b, int mySqr(const int& number))
{
return mySqr(a) + mySqr(b);
}