C++ std::bind
来源:互联网 发布:日程管理 知乎 编辑:程序博客网 时间:2024/04/30 20:40
std::function std::bind下面是通过这两个实现 函数执行体跟函数上下文的动态绑定 (C++闭包)
#include <iostream>#include <functional>using namespace std; typedef std::function<void(char*)> ccMenuCallback;class B{public: virtual ~B(){} B(){cout<< "B::B()" << endl;} B(const ccMenuCallback& _callback){ cout<< "B::Bcallback()" << endl; this->_callback = _callback; cout<< "B::Be()" << endl; } void bf() { cout<< "B::bf()" << endl; _callback(this->name); } ccMenuCallback _callback; char *name = "Bname";};class A {public: virtual ~A(){} A(){} void f(char* name) { cout << "A::f()" << this->inta<< name<< endl; } void init() { //注意 ccMenuCallback f = std::bind(&A::f,this,std::placeholders::_1); // f(); pb = new B(f); } B *pb; int inta = 5;};int main() { A* pa = new A; pa->init(); // pa->pb->_callback(); pa->pb->bf(); return 0;}理解上面注意下面2点:
1. B::bf(), 不需要显式的A类对象,而是直接函数式调用,
2. 可以访问绑定到其上的A成员变量inta , 同时他还可以传入额外的数据B类的name.
0 0
- C++-----------------------------------------------------std::bind
- C++_std::bind std::function 高级用法
- std::bind绑定器、std::function、extern C的使用
- std::bind
- std::bind
- std::bind
- std::bind
- std::bind
- std::bind
- std::bind
- std::function std::bind
- std::function std::bind
- 【C/C++】C++11新特性:std::bind
- C++11 学习笔记 std::function和bind绑定器
- C++11 笔记 std::function,bind绑定器和lambda
- std::function 和 std::bind
- lambda, std::function, std::bind
- std::bind std::find 学习
- 总结下过去一些日子的得失。
- myeslipse的破解激活
- hadoop 2.2.0 安装与测试
- C++学习笔记7 C++函数的升级 上
- 巧数之6174
- C++ std::bind
- C#调用ThoughtWorks.QRCode.dll生成带参数二维码
- JavaScript面向对象之类方法和类属性的定义
- HttpClient 教程 (一)
- 向apache添加模块以及一些说明
- 【杂七杂八】用Win7自带磁盘管理工具搞定磁盘分区
- python 装饰器
- BMC Reporting 9.0 数据库迁移
- Java中的try、catch和finally