c++ - 现代 C++ 函数返回函数指针的方式

标签 c++ pointers

我是 C++ 的新手,我开始阅读有关该主题的书。有一个练习说:“声明一个指向以 int 作为参数的函数的指针,并返回一个指向以 char 为参数并返回 float 的函数的指针”。我最终得到了这段代码:

#include <iostream>
using namespace std;

float func(char c) {
    return 3.14;
}

float((*fun2(int))(char)) {
    return &func;
}

int main() {
    float(*fp)(char) = fun2(3);
    cout << fp('c') << endl;
}

问题是:它在今天的 C++ 编程中是否仍然合适。如果是这样 - 是否需要对代码进行任何更改(应用新的抽象等)?谢谢。

最佳答案

你可以声明一个类型别名:

using my_fp = float ( * )(char); // can work before C++11 with typedef

my_fp fun2(int){
  return &func;
}

my_fp fp = fun2(0);

和/或全自动类型推导:

auto fun2(int) { // available in C++14
  return &func;
}

// Use a suitable value in the call to fun2
auto fp{fun2(0)}; // available in C++11

关于c++ - 现代 C++ 函数返回函数指针的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48268283/

相关文章:

c++ - boost::interprocess_mutex 与进程本地 boost::mutex

c++ - 这是 glGetTexParameterIuiv 的错误或预期行为吗?

c++ - Ubuntu 上 Jupyter 的 Cling 内核

pointers - 如何使用指向该 slice 的指针获取 slice 项

c++ - SIGSEGV(段错误)C++ 指针

c - 指针和正则变量同名

C++指针奇怪的未定义行为

c++ - 竞争条件和解锁写入

c++ - std::bind 如何以及为何使指针保持事件状态

c++ - 给定一个元素的地址搜索二维数组