两者都能很快的实现对函数的调用,但是function 是c++11的特性,而函数指针是98就有的内容。
void func01(std::string str){
std::cout<<str<<std::endl;
}
int main(){
//一个简单函数指针的使用
void (*ptrfunc)(std::string);
ptrfunc = &func01;
(*ptrfunc)("hello world");
return 0;
}
//function 的使用
void func01(std::string str){
std::ccout<<str<<std::endl;
}
int main(){
std::function<void(std::string)> fuc01 = func01; //或者fuc01(func01)
fuc01("hello world");
//function还可以与lambda结合
std::function<void(std::string)> fuc02 = [](std::string str)->void{return std::cout<<str<<std::endl;};
fuc02("hello world");
return 0;
}
//function与类成员函数结合
Test{
public:
void func01(std::string){
std::cout<<str<<std::endl;
}
};
int main(){
std::function<void(Test*, std::string)> fuc01 = &Test::func01;
Test t;
fuc01(&t, "hello world"); //其实这个&t 是this 指针,因为有一个隐藏的this指针参数
return 0;
}
还有function 和bind的结合
还会很精彩
后面续上