C++函数指针的使用例子
时间: 2023-09-01 19:11:12 浏览: 57
以下是一个简单的 C++ 函数指针的使用例子:
```cpp
#include <iostream>
// 定义一个函数指针类型,指向一个接受两个 int 类型参数并返回 int 类型的函数
typedef int (*FuncPtr)(int, int);
// 定义一个函数 add,接受两个 int 类型参数并返回它们的和
int add(int a, int b) {
return a + b;
}
// 定义一个函数 sub,接受两个 int 类型参数并返回它们的差
int sub(int a, int b) {
return a - b;
}
// 定义一个函数 calc,接受两个 int 类型参数和一个函数指针,调用该函数指针指向的函数并返回结果
int calc(int a, int b, FuncPtr ptr) {
return ptr(a, b);
}
int main() {
int a = 10, b = 5;
// 声明一个函数指针
FuncPtr ptr;
// 将函数指针指向 add 函数
ptr = add;
std::cout << "a + b = " << calc(a, b, ptr) << std::endl;
// 将函数指针指向 sub 函数
ptr = sub;
std::cout << "a - b = " << calc(a, b, ptr) << std::endl;
return 0;
}
```
在上面的例子中,我们定义了两个函数 `add` 和 `sub`,分别实现两个整数的加法和减法。然后定义了一个函数指针类型 `FuncPtr`,它指向一个接受两个 `int` 类型参数并返回 `int` 类型的函数。接下来,我们定义了一个 `calc` 函数,它接受两个 `int` 类型参数和一个函数指针,调用该函数指针指向的函数并返回结果。最后,在 `main` 函数中,我们声明了一个函数指针 `ptr`,并将它先指向 `add` 函数,然后调用 `calc` 函数计算两个整数的和;接着,将 `ptr` 指向 `sub` 函数,再次调用 `calc` 函数计算两个整数的差。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)