C++11最引人注目的新特性就是移动语义和lambda表达式,移动语义用来优化对象赋值, 而lambda表达式用来简化代码,消除冗余的类型声明。lambda表达式的本质, 是一个可调用对象, 下面列举出两个例子。java
1. 日常使用线程, 须要指定一个函数指针(或者成员函数指针)和参数,而使用lambda表达式, 能够写出这样的代码:android
Thread t; t.setRunnable([](void){ printf("thread run\n"); }); t.start();
2. 用于事件驱动,在android中, 能够使用这样的代码,将任务发送给另一个线程处理ide
Handler handler = new Handler()//默认UI主线程 mHandler.post(new Runnable() { @Override public void run() { //执行任务 } });
如今,C++11也能写出相似风格的代码函数
void login(const std::string & name, const std::string & password){ //执行登陆操做, 这是一个耗时的操做, 须要将任务分配到另一线程去执行 post([=](void){ HttpClient hc; hc.addParam("name", name); hc.addParam("password", Md5.encode(password)); ... hc.exec(); }); }