到目前为止我一直在使用函数指针,就像 c++ 中的这种格式。我现在确实有一些用途,我想知道 c++11/14 中是否引入了其他任何替代方案。
#include <iostream>
using namespace std;
void sayHello();
void someFunction(void f());
int main() {
someFunction(sayHello);
return 0;
}
void sayHello(){
std::cout<<"\n Hello World";
}
void someFunction(void f()){
f();
}
我确实看过这个question但无法理解与传统使用函数指针相比有什么优势。另外我想问一下,使用函数指针有什么问题(不推荐)吗,因为我从未见过有人使用它们。或任何其他替代礼物。
最佳答案
你提到的问题建议 std::function 但没有强调(或根本没有提到)它与 std::bind 结合时的值(value)。
你的例子是最简单的,但假设你有一个
std::function<void (int, int)> f ;
函数指针可以做或多或少相同的事情。但是假设你需要一个函数 g(int),它是 f,第二个参数绑定(bind)到 0。使用函数指针你不能做太多,使用 std::function 你可以这样做:
std::function<void(int)> g = std::bind(f, _1, 0) ;
关于c++ - 函数指针的现代 C++ 替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30748919/