C++11使用lambda表达式简化代码

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();
    });
}
相关文章
相关标签/搜索