两者都能很快的实现对函数的调用,但是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的结合
还会很精彩
后面续上