原创 用C++ 寫一個不能被繼承的類

條件:用C++寫一個不能被繼承的類,但這個類既可以在棧上實例化也可以在堆上實例化。 如果一個類不能被繼承,我第一想到的是這個類的構造函數爲private.如果要可以在堆上實例化,我就想到使用靜態成員函數模擬構造函數的功能,內部創建堆上對

原创 位操作小結

位操作是程序設計中對位模式按位或二進制數的一元和二元操作. 在許多古老的微處理器上, 位運算比加減運算略快, 通常位運算比乘除法運算要快很多. 在現代架構中, 情況並非如此:位運算的運算速度通常與加法運算相同(仍然快於乘法運算).

原创 STL基礎篇(適合初學者快速入門)

1.       STL 是什麼 作爲一個C++ 程序設計者,STL 是一種不可忽視的技術。 Standard Template Library (STL) :標準模板庫, 更準確的說是 C++ 程序設計語言標準模板庫。STL 是所有C

原创 智能指針boost::scoped_ptr

【1】boost::scoped_ptr簡介 boost::scoped_ptr屬於boost庫,定義在namespace boost中,包含頭文件#include <boost/scoped_ptr.hpp>便可以使用。 一句話:一個

原创 智能指針boost::weak_ptr

【1】boost::weak_ptr簡介 boost::weak_ptr屬於boost庫,定義在namespace boost中,包含頭文件 #include<boost/weak_ptr.hpp>便可以使用。 【2】boost::we

原创 再次理解封裝繼承多態

諸位周知,計算機是對現實世界的一種模擬,現在從嚴格意義而言,其實同時更是一種擴充。 編程語言是程序員通過編譯器與計算機進行溝通的一種工具。 C++編程語言是面向對象的設計理念,也就是以對象爲核心。 那麼,爲了能達到代碼的複用性,

原创 如何使用set::key_comp 和 set::value_comp 標準模板庫 (STL) 函數

下面的代碼示例演示如何使用 Visual C++ set::key_comp 和 set::value_comp 的 STL 功能。 所需要的頭文件:<set> 原型 temp

原创 C++中基於Crt的內存泄漏檢測

儘管這個概念已經讓人說濫了 ,還是想簡單記錄一下, 以備以後查詢。 #ifdef _DEBUG#define DEBUG_CLIENTBLOCK   new( _CLIENT_BLOCK, __FILE__, __LINE__)#els

原创 值語義與對象語義

【1】什麼是值語義? 所謂值語義是指目標對象由源對象拷貝生成,且生成後與源對象完全無關,彼此獨立存在,改變互不影響。就像 int 類型變量相互拷貝一樣。 C++的內置類型(bool/int/double/char)都是值語義,標準

原创 如何編寫高質量的代碼——來自《代碼大全(第2版)》的啓示

軟件的首要技術使命是管理複雜度,計算先驅Edsger Dijkstra指出,只有在“計算(Computing)”這種職業中,人的思維需要從一個字節大幅跨越到幾百兆字節——跨度爲109比1,也就是9個數量級[1]。Dijkstra還指出,沒

原创 資源共享型智能指針實現方式簡述

資源共享型智能指針實現方式簡述 資源共享型的智能指針有兩種實現方式:一種是侵入式;一種是非侵入式。 網上以及書籍比較常見的是非侵入式的,它的實現完全放在智能指針模板類內。 模板類有一個用於保存資源類對象的指針變量和一個用於記錄資源對

原创 雜談:智能指針與庫

最近看一些庫時發現僅指針一項就有挺多封裝, 思考爲什麼需要智能指針? 通過智能指針可以以RAII的方式管理對象, 編寫異常安全的代碼; 原始的指針沒有標明對象所有權的情況, 對象是你單獨擁有的?還是你和別人共享對象, 但是你也參與管理?

原创 C語言高效編程的的四大絕招(轉載)

引言: 編寫高效簡潔的C語言代碼,是許多軟件工程師追求的目標。本文就工作中的一些體會和經驗做相關的闡述,不對的地方請各位指教。 第一招:以空間換時間 計算機程序中最大的矛盾是空間和時間的矛盾,那麼,從這個角度出發逆向思維來考慮程序的效率

原创 送給初學者:淺談面向過程與面向對象

【1】面向過程 “面向過程”是一種以過程爲中心的編程思想。 “面向過程”也可稱之爲“面向記錄”編程思想。 我們知道計算機莫非就是對現實世界的模擬。那所謂的這種思想肯定可以映射或者說等價於現實中的具體情形。 哦,我知道了!面向過

原创 智能指針boost::shared_ptr

【1】boost::shared_ptr簡介 boost::shared_ptr屬於boost庫,定義在namespace boost中,包含頭文件#include<boost/shared_ptr.hpp>便可以使用。 上篇boost