原创 Effective C++ 讀書筆記12(41~42)

7 模板和泛型編程 條款41:瞭解隱式接口和編譯器多態 面向對象編程世界總是以顯式接口和運行期多態解決問題: class Widget{ public: Widget(); virtual ~Widget(); virutal

原创 Effective C++讀書筆記5

條款15:在資源管理類中提供對原始資源的訪問 資源管理類很好,但是有許多API 直接指涉資源管理類所管理的資源,那麼只能繞過資源管理對象直接訪問原始資源。條款13:使用智能指針保存工廠函數如CreateInvestment的調用結果: s

原创 Effective C++ 讀書筆記13(43~47)

條款43:學習處理模板化基類內的名稱 條款44:將與參數無關的代碼抽離templates 條款45:運用成員函數模板接受所有兼容類型 條款46:需要類型轉換時請爲模板定義非成員函數 條款47:請使用traits class表現類型信息 S

原创 Effective C++ 讀書筆記9(32~34)

6 繼承與面向對象設計 條款32:確定你的public集成塑模出is-a關係 請記住: public繼承意味is-a,適用於base classes深證的每一件事情也一定適用於derived classes身上,因爲每一個derived 

原创 Effective C++讀書筆記8

條款28:避免返回handles指向對象內部成分 class Point{ public: Point(int x, int y); //... void setX(int newVal); void setY(int new

原创 Effective C++讀書筆記11(37~40)

條款37:絕不重新定義繼承而來的缺省參數值 本條款成立的理由非常明確:virutal函數系動態綁定,而缺省參數值卻是靜態綁定。 對象的靜態類型,就是他在程序被聲明時所採用的類型。考慮以下的class繼承體系: class Shape{

原创 Effective C++ 讀書筆記1

條款1 視C++爲一個語言聯邦      今天的C++已經是個多重範型編程語言,一個支持過程形式、面向對象形式、函數形式、泛型形式、元編程形式的語言。爲了理解C++,必須認識其主要的次語言,總共4個: 1.C 2.Object-Orien

原创 Effective C++讀書筆記15

8 定製new和delete條款49:瞭解new-handler的行爲當operator new無法滿足某一內存分配需求時,它會拋出異常。以前她會返回一個null指針,某些舊式編譯器目前也還那麼做。當new拋出異常以反映一個未獲滿足的內

原创 mmap測試

#include "mmap_fstream.h" #include "log.h" #include <iostream> #include <ostream> #include <string.h> #include <fstream

原创 Effective C++讀書筆記2

條款4 確定對象被使用前已被初始化      讀取未初始化的值會導致不明確的行爲,在某些平臺上,僅僅只是讀取未初始化的值,就可能讓你的程序終止運行。對象的初始化動作何時一定發生,何時不一定發生的規則很複雜,,最佳解決辦法就是:永遠在使用對

原创 Effective C++讀書筆記10(35~36)

條款35:考慮virtual函數以外的其他選擇 設計一款遊戲,爲不同的人物設計不同的計算健康指數的函數,那麼使用virutal函數很自然: class GameCharacter{ public: virtual int healt

原创 boost::serialization

轉自:http://www.cnblogs.com/edwardlost/archive/2011/03/16/1984623.html boost::serialization 基於 boost::archive 來完成任意複雜數據結

原创 Effective C++讀書筆記16

條款51:編寫new和delete時需固守常規(對這個條款體會不深) 請記住: 1.operator new應該內含一個無窮循環,並在其中嘗試分配內存,如果它無法滿足內存需求,就該調用new-handler。它也應該有能力處理0 byte

原创 Effective C++讀書筆記3

條款8: 別讓異常逃離析構函數 C++並不禁止析構函數吐出異常,但不鼓勵這樣做。但如果你的析構函數必須執行一個動作,而該動作可能會在失敗時拋出異常,該怎麼辦? 兩個辦法解決: 一是 如果拋出異常程序就結束,通常通過調用abort函數完成:

原创 linux下cdt使用技巧總結

1.在cdt中,build時默認的命令是make,但是也可以修改,在工程配置中,點擊C/C++ Build,有個builder settings,去掉 use default build command,就可以修改build的命令了,至於