C++函数指针声明方法并用智能指针转换
时间: 2023-08-04 14:17:46 浏览: 109
c++智能指针的实现
在 C++ 中,可以使用智能指针来管理函数指针,从而避免手动管理内存的麻烦。下面是一个示例代码,演示了如何声明一个函数指针类型,并使用智能指针进行内存管理:
```
#include <memory>
// 声明函数指针类型
using FuncPtr = int (*)(int, int);
// 函数指针的实现
int func_impl(int a, int b) {
return a + b;
}
int main() {
// 使用 unique_ptr 管理函数指针
std::unique_ptr<FuncPtr> pFunc(new FuncPtr(func_impl));
// 调用函数指针
int result = (*pFunc)(1, 2);
return 0;
}
```
在上面的代码中,我们先使用 `using` 声明了一个函数指针类型 `FuncPtr`。然后在 `main` 函数中,使用 `unique_ptr` 来管理该函数指针类型。在 `unique_ptr` 构造函数中,我们使用 `new` 运算符来分配内存,并将函数指针 `func_impl` 的地址传递给 `unique_ptr`。最后,通过解引用 `unique_ptr` 并传递参数来调用函数指针。
需要注意的是,由于 `unique_ptr` 禁止拷贝,因此不能将其赋值给另一个 `unique_ptr`,但可以将其释放为裸指针后,再用另一个 `unique_ptr` 接管该指针。
阅读全文