模式雖然精妙,卻難完美,比如觀察者模式中觀察者生命周期的問題;比如訪問者模式中循環依賴的問題等等;其它很多模式也存在這樣那樣的一些不足之處,如使用場景受限、實現復雜、不夠簡潔、不夠通用等。但我覺得不足之處大都是可以采取一些手法去彌補去改進的,比如用c++11的新特性來改進。因此,便有 ...
我會寫關於c 的一個系列的文章,會講到如何使用c 改進我們的程序,本次講如何改進我們的模式,會講到如何改進單例模式 觀察者模式 訪問者模式 工廠模式 命令模式等模式。通過c 的改進,我們的模式變得更通用 更簡潔 更強大。本次講如何改進單例模式。 在c 之前,我們寫單例模式的時候會遇到一個問題,就是多種類型的單例可能需要創建多個類型的單例,主要是因為創建單例對象的構造函數無法統一,各個類型的形參不盡 ...
2013-06-19 21:29 3 15773 推薦指數:
模式雖然精妙,卻難完美,比如觀察者模式中觀察者生命周期的問題;比如訪問者模式中循環依賴的問題等等;其它很多模式也存在這樣那樣的一些不足之處,如使用場景受限、實現復雜、不夠簡潔、不夠通用等。但我覺得不足之處大都是可以采取一些手法去彌補去改進的,比如用c++11的新特性來改進。因此,便有 ...
c++11 boost技術交流群:296561497,歡迎大家來交流技術。 本次要講的時候如何改進代理模式,具體來說是動態代理模式,動態代理模式一般實現AOP框架,不懂AOP的童鞋看這里。我前面的博文也實現了一個AOP框架(可以參考我前面的博文:(原創) C++ 輕量級AOP框架 ...
和單例模式面臨的是同樣的問題,主題更新的接口難以統一,很難做出一個通用的觀察者模式,還是用到可變模板參數解決這個問題,其次還用到了右值引用,避免多余的內存移動。c++11版本的觀察者模式支持注冊的觀察者為函數、函數對象和lamda表達式,也避免了虛函數調用,更簡潔更通用。直接看代碼 ...
本次主要講c++11中的右值引用,后面還會講到右值引用如何結合std::move優化我們的程序。 c++11增加了一個新的類型,稱作右值引用(R-value reference),標記為T &&,說到右值引用類型之前先要了解什么是左值和右值。左值具名,對應指定內存域,可訪問;右值 ...
本次要講的是右值引用相關的幾個函數:std::move, std::forward和成員的emplace_back,通過這些函數我們可以避免不必要的拷貝,提高程序性能。move是將對象的狀態或者所 ...
這次要講的是:c++11中的bind和function std::function 它是函數、函數對象、函數指針、和成員函數的包裝器,可以容納任何類型的函數對象,函數指針,引用函數,成員函數的指針。以統一的方式處理函數、函數對象、函數指針、和成員函數。允許保存和延遲執行函數。 函數 ...
這次要講的內容是:c++11中的tuple(元組)。tuple看似簡單,其實它是簡約而不簡單,可以說它是c++11中一個既簡單又復雜的東東,關於它簡單的一面是它很容易使用,復雜的一面是它內部隱藏了太多細節,要揭開它神秘的面紗時又比較困難。 tuple是一個固定大小的不同類型值的集合,是泛化 ...
c#和java中有自動垃圾回收機制,.net運行時和java虛擬機可以管理分配的堆內存,在對象失去引用時自動回收,因此在c#和jva中, 內存管理不是大問題。c++語言沒有垃圾回收機制,必須自己去釋放分配的堆內存,否則就會內存泄露。 我相信大部分c++開發人員都遇到過內存泄露的問題,而查找 ...