原创 C++拾遺--智能指針
C++拾遺--智能指針 前言 內存泄露是常見的問題,新標準中的智能指針從根本上解決了這個問題。所謂的智能指針,其智能性體現在:當沒有對象使用某塊動態分配的內存時,那就自動釋放這片內存
原创 C++拾遺--構造函數(二)拷貝構造
C++拾遺--構造函數(二)拷貝構造 前言 在構造函數(一)中討論的是默認構造函數的一些應用。這裏我們來探討下其它的一些有名構造函數,及其它們的應用場景。 實例 #include <
原创 C++拾遺--bind函數綁定
C++拾遺--bind函數綁定 前言 函數綁定bind函數用於把某種形式的參數列表與已知的函數進行綁定,形成新的函數。這種更改已有函數調用模式的做法,就叫函數綁定。需要指出:bind
原创 C++拾遺--函數模板
C++拾遺--函數模板 前言 泛型的核心思想是數據與算法分離。函數模板是泛型編程的基礎。 函數模板 函數模板以 template<arg_list> 開頭,arg_list是泛型參數
原创 C++拾遺--模板元編程
C++拾遺--模板元編程 前言 模板元是用於遞歸加速的,把運行期的函數調用變到編譯期進行代碼展開,類似於內聯函數。下面看一個實例:斐波那契數列第n項求解。 模板元編程 #inc
原创 C++拾遺--構造函數(一)默認構造
C++拾遺--構造函數(一)默認構造 前言 對一個類而言,構造函數恐怕是最重要的一個成員函數了。關於構造函數的細節繁多,並且隨着新標準的提出,構造函數有了新的特性。本文來集中探討下構造函數的
原创 C++拾遺--多線程:C語言多線程的引入
C++拾遺--多線程:C語言多線程的引入 前言 多線程是編程中的一個重要內容。多核時代使多線程成爲一種可能,顯然,一件事情多個人幹,效率一定會提升。下面來看下C語言中是如何使用多線程的。
原创 C++拾遺--name_cast 顯式類型轉換
C++拾遺--name_cast 顯式類型轉換 前言 C++中提供了四種顯式的類型轉換方法:static_cast,const_cast,reinterpret_cast,dynamic_c
原创 C++拾遺--函數重載
C++拾遺--函數重載 前言 函數重載(overloaded)似乎並不難,至於函數重載規則,比較簡單,沒什麼好講的。但仍有一些問題值得注意。下面從幾個關鍵詞入手: 正文 1.作用域 關於
原创 C++拾遺--多線程:原子操作解決線程衝突
C++拾遺--多線程:原子操作解決線程衝突 前言 在多線程中操作全局變量一般都會引起線程衝突,爲了解決線程衝突,引入原子操作。 正文 1.線程衝突 #include <stdio.h> #inc
原创 C++拾遺--多線程:臨界區解決子線程的互斥
C++拾遺--多線程:臨界區解決子線程的互斥 前言 爲了解決子線程的互斥問題,windows系統提出了關鍵段或臨界區(CRITICAL_SECTION)的概念。它一共有四個共兩對操作:初始化、銷
原创 C++拾遺--C++多線程引入
C++拾遺--C++多線程引入 前言 C++庫文件也提供了對多線程的支持,主要包含頭文件thread即可使用C++中的多線程。它的一些與多線程有關的方法和C語言不同。我們有必要來探討下
原创 C++拾遺--定位new表達式
C++拾遺--定位new表達式 前言 new表達式,默認下把內存開闢到堆區。使用定位new表達式,可以在指定地址區域(棧區、堆區、靜態區)構造對象,這好比是把內存開闢到指定區域。 正
原创 C++拾遺--lambda表達式
C++拾遺--lambda表達式 前言 有時,我們需要在函數內部頻繁地使用某一功能。此時,我們可以把這種功能寫成一個獨立的函數。而實際上,這個新的函數很可能是不需要在其它的地方
原创 C++拾遺--malloc free與new delete的同與不同
C++拾遺--malloc free與new delete的同與不同 前言 在C中我們常使用malloc和free來動態分配與釋放內存,在C++中對應的是new和delete。這裏我們來探討下