新的字符串表示方式——原生字符串(Raw String Literals) C/C++中提供了字符串,字符串的轉義序列,給輸出帶來了很多不變,如果需要原生義的時候,需要反轉義,比較麻煩。 C++提供了,原生字符串,即字符串中無轉義,亦無需再反義。詳細規則見帶碼 ...
ScopeGuard的作用是確保資源面對異常時總能被成功釋放,就算沒有正常返回。慣用法讓我們在構造函數里獲取資源,當因為異常或者正常作用域結束,那么在析構函數里釋放資源。總是能釋放資源。如果沒有異常拋出則正常結束,只是有異常發生或者沒有正常退出時釋放資源。關於ScopeGaurd的概念想多了解一點的童鞋點這里和這里。c 中的ScopeGuard比較簡單,通過using初始化或者通過finally ...
2013-11-13 14:20 7 3621 推薦指數:
新的字符串表示方式——原生字符串(Raw String Literals) C/C++中提供了字符串,字符串的轉義序列,給輸出帶來了很多不變,如果需要原生義的時候,需要反轉義,比較麻煩。 C++提供了,原生字符串,即字符串中無轉義,亦無需再反義。詳細規則見帶碼 ...
熟悉C#的人都清楚delegate,也清楚委托的作用。 實現觀察者模式,在C++中的一種做法就是通過接口繼承來實現,這無疑大大增加了耦合度。通過delegate變可以解除這種耦合。 下面是上班時間,偷偷實現的一個我的delegate。直接上碼: 以下 ...
咳咳。C++11 加入了線程庫,從此告別了標准庫不支持並發的歷史。然而 c++ 對於多線程的支持還是比較低級,稍微高級一點的用法都需要自己去實現,譬如線程池、信號量等。線程池(thread pool)這個東西,在面試上多次被問到,一般的回答都是:“管理一個任務隊列,一個線程隊列,然后每次取一個 ...
c++11 閉包的實現 什么是閉包 閉包有很多種定義,一種說法是,閉包是帶有上下文的函數。說白了,就是有狀態的函數。更直接一些,不就是個類嗎?換了個名字而已。 一個函數,帶上了一個狀態,就變成了閉包了。那什么叫 “帶上狀態” 呢? 意思是這個閉包有屬於自己的變量,這些個變量的值是創建閉包 ...
實現一個簡易版的c++11 tuple。 我使用的編譯器是gcc,codeblocks13.12自帶的,哪個版本我不熟gcc也沒去查。 大致看了下他家的tuple實現,多繼承,tuple之上還有2個輔助類,走的是類似loki中GenScatterHierarchy的路子。1092行代碼,不是蓋 ...
c++11 boost技術交流群:296561497,歡迎大家來交流技術。 本次要講的時候如何改進代理模式,具體來說是動態代理模式,動態代理模式一般實現AOP框架,不懂AOP的童鞋看這里。我前面的博文也實現了一個AOP框架(可以參考我前面的博文:(原創) C++ 輕量級AOP框架 ...
上一篇博文用c++11實現了variant,有童鞋說何不把any也實現一把,我正有此意,它的兄弟variant已經實現了,any也順便打包實現了吧。其實boost.any已經挺好了,就是轉換異常時,看不到詳情,和boost.variant一樣的問題。實現any比實現variant要簡單,需要 ...
這次要講的是:C++11如何通過組合函數來簡化我們的程序。關於組合函數,大家可能對這個概念有點陌生。組合函數是將N個一元函數組成一種更復雜的函數,每個函數的返回值作為參數傳給下一個函數,直到傳到最后一個函數結束。這種組合函數的能力可以使我們以一種更直觀的方式去完成復雜的鏈式執行行為。例如有三個 ...