我是 C++ 的新手,我开始阅读有关该主题的书。有一个练习说:“声明一个指向一个以 int 作为参数的函数的指针,并返回一个指向一个以 char 作为参数并返回浮点数的函数的指针”。我最终得到了这个代码:
#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;
}
Run Code Online (Sandbox Code Playgroud)
问题是:它是否仍然适用于今天的 C++ 编程。如果是这样 - 是否需要对代码进行任何更改(应用新的抽象等)?谢谢。
您可以声明一个类型别名:
using my_fp = float ( * )(char); // can work before C++11 with typedef
my_fp fun2(int){
return &func;
}
my_fp fp = fun2(0);
Run Code Online (Sandbox Code Playgroud)
和/或全自动类型推导:
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
Run Code Online (Sandbox Code Playgroud)