本文共 1485 字,大约阅读时间需要 4 分钟。
#include#include #include using namespace std;void print(){ std::cout << "here is print" <<'\n';}void print_num(int i){ std::cout << i << '\n';}void print_add(int i, int j){ std::cout << i+j << '\n';}class Foo{public: Foo(int data) { m_data = data; } void print_sum(int n1, int n2) { std::cout << n1 + n2 << std::endl; } int m_data;};int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); using namespace std::placeholders;//------------------------------------------------------- //调用void print()函数 //1.不使用std::bind std::function f = print; f(); //2.使用std::bind std::function f_bind = std::bind(print); f_bind(); //调用void print_num(int i)函数 //1.不使用std::bind std::function ff = print_num; ff(12345); //2.使用std::bind std::function ff_bind = std::bind(print_num, 12345); ff_bind(); //调用void print_adds(int i, int j)函数 //1.不使用std::bind std::function fff = print_add; fff(1,2); //2.使用std::bin std::function fff_bind = std::bind(print_add, 1,2); fff_bind();//------------------------------------------------------- // 绑定指向成员函数指针 //使用auto自动推导数据类型 Foo *foo = new Foo(20); std::function f1 = std::bind(&Foo::print_sum, foo, 95, 4); f1(); std::function f2 = std::bind(&Foo::print_sum, foo, 95, _1); f2(5); auto f3 = std::bind(&Foo::print_sum, foo, 95, 6); f3(); auto f4 = std::bind(&Foo::print_sum, foo, 95, _1); f4(7); return a.exec();}
转载地址:http://uemji.baihongyu.com/