原创 C++編碼規範系列 一

6.Declare destruction virtual in polymorphic base classes. c++中明確指出,如果derived class對象被一個base class指針持有,通過這個base cl

原创 C++編碼規範系列 開篇

C++編碼規範系列 開篇 開篇 C++是一種在設計之初,便兼顧性能和設計,擁有罕見的威力和豐富的表達能力,只要運用得當,可以表現出巨大而變化多端的設計和優秀的性能體現,然而沒有良好的規範,可能導致代碼難以理解,難以維護,可擴展性低

原创 C++ 編碼規範系列 二

C++編碼規範系列 二 C++編碼規範(資源) C++的資源包括內存,文件描述器,互斥鎖,數據庫連接,網絡sockets,需要確保所有的資源得到正確的申請和釋放是一件不容易的事情,但是如果能夠合理的利用規則避免資源的錯誤管理,對於

原创 C++編碼規範系列 三

C++編碼規範系列 三 C++編碼規範(設計) “讓接口容易被用戶正確的使用,不易被誤用”。如果一段代碼通過編譯,這個接口應該獲得用戶所有預期的行爲,如果客戶使用接口沒有獲得自己想要的行爲,那麼這一段代碼不應該通過編譯。 不易誤用

原创 設計模式之工廠和抽象工廠

Factory模式 問題: 由於多態的設計,使用基類指針指向子類對象,但是子類的名稱會很難控制,另外在客戶端可能會不知道去實例化具體哪一個子類對象。 方案: 工廠模式 1. 封裝了對象的創建;2. 並將實例化的工作延遲到子類中。

原创 Linux網絡接口操作 ioctl 接口參數

ioctl interface Linux提供了一系列網絡接口操作相關的命令集,其中,一些傳統的工具,如net-tools軟件包中的ifconfig(8),arp(8),route(8)都是通過ioctl(2)系統調用實現; 本篇

原创 設計模式 之 Template,Strategy,State,Observer,Memento,Mediator,Command,Visitor,Chain of Responsibility

Template Pattern 開放-封閉原則: 軟件實體應該是可以擴展但是不可以修改的(對擴展開放,對更改封閉)。 開閉原則希望用抽象來應對變化,開發人員應該對程序中呈現出頻繁變化的部分作出抽象; 里氏替換原則: 子類對象必須

原创 設計模式 之 Bridge,Adapter,Decorator,Composite,Proxy

Bridge Pattern 問題: 在面向對象中,代碼結構設計的目標就是“鬆耦合,高內聚”,儘可能提高系統模塊的內部的內聚,儘可能降低模塊之間的耦合;有一個對應的原則是 “Favor Composition Over Inher

原创 C++編碼規範系列八 (模板編程)

C++編碼規範八 (模板編程) 預編譯頭文件 淺層實例化:底層模板往往是在實例化上層模板的過程中被實例化的。因此,一旦因爲底層模板的錯誤而導致上層模板不能被正確的實例化,編譯器所給出的診斷信息通常會包含對產生這個問題的所有層次的完

原创 C++編碼規範系列 四

C++編碼規範系列 四 C++編碼規範(實現) 儘可能延後變量定義的出現時機 因爲變量的定義需要承擔構造和析構的成本。應該延後到能夠給變量賦初值的時候,不僅能夠避免構造和析構非必要對象,還可以避免無意義的default構造行爲(因

原创 C++編碼規範系列 七(模板編程)

C++編碼規範(模板編程) C++2011標準允許函數模板帶有缺省的類型參數,如果類型參數的缺省值與隱式推斷的類型不一致,以隱式推斷爲準。 雙引號下的字符串類型是指針 作爲形參如果是傳引用&則會將字符串作爲一個整體來使用 如果直接

原创 Linux 下的文件系統

磁盤的基本概念 MBR(Master Boot Rcord) 早期linux爲了兼容windows處理磁盤上開機管理程序和分區表,將這些信息放在磁盤的第一個扇區,通常512bytes大小(其中,446bytes用來安裝開機管理程序

原创 C++編碼規範系列 六(模板編程)

C++編碼規範系列 六 C++編碼規範(模板編程) 模板是類型參數化的一種實現。而宏定義只是在預處理器的作用下,實現替換,可以在某種程度上使程序的編寫脫離類型的約束和限制,但是同時也喪失了類型的安全性。 但是可以通過宏定義構建通

原创 淺談double dispatch (雙分派) 之 vistor pattern

double dispatch(雙分派) 是 multi-dispatch(多分派)的特例,由於 Visitor 模式涉及的 是 double dispatch(雙分派),因此這裏僅僅討論 double dispatch(雙分派)

原创 C++編碼規範系列 五

C++編碼規範系列 五 C++編碼規範(繼承和麪向對象) public繼承是is-a的關係 public 繼承:子類對象同時也是一個父類型的對象。在父類的操作都可以施於子類身上。每一個子類對象同時也是一個父類對象is-a 的關係