c++11 函数指针声明
时间: 2024-07-29 19:00:24 浏览: 46
C++11引入了对函数指针的增强支持,使得函数指针的声明更加灵活和强大。函数指针是一种特殊的指针类型,它存储的是指向函数的地址,可以在运行时调用这些函数。在C++11中,函数指针的声明主要有以下几种形式:
1. **普通函数指针**:
```cpp
// 声明指向返回类型为T,接受一个参数类型的函数
void (*func_ptr)(参数类型);
```
例如,声明一个指向整数的加法函数指针:
```cpp
int (*add)(int, int);
```
2. **带默认参数值的函数指针**:
```cpp
// 声明指向接受可选参数的函数,如带有默认参数的void函数
void (*func_ptr)(参数类型 = 默认值);
```
注意,这种形式仅限于C++11及更高版本,对于不带默认参数的函数,C++11中仍然是按传统的形式声明。
3. **指向成员函数的函数指针**:
```cpp
// 声明指向类成员函数的函数指针
void (ClassType::*mem_func_ptr)(参数类型);
```
用于存储类的成员函数地址。
4. **重载函数指针**:
```cpp
// C++11之前的方式,使用std::function模板或boost库
// C++11后,使用函数指针模板(如std::function<void(int)>)或直接声明
// 注意:函数指针模板不能用于捕获默认参数
std::function<void(参数类型)> func_ptr;
```
**相关问题--:**
1. C++11如何声明带默认参数值的函数指针?
2. 如何在C++11中声明指向类成员函数的函数指针?
3. C++11标准引入了哪些新的函数指针声明语法?
阅读全文