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(); }); }