讓自己習(xí)慣C++
條款01
視C++為一個(gè)語言聯(lián)邦
包含:
- C語言
- C with Class
- Template C++/模板元編程
- STL
條款02
以const,enum,inline替代#define
其中enum用在編譯器期需要常量時(shí),即"the enum hacks",原理是枚舉可充當(dāng)int,注意enum無法取地址或引用
inline函數(shù)用于替代形似函數(shù)的宏(macros)
條款03
盡可能使用const
注意const與指針的位置作用
const可與指針/迭代器/指針對(duì)象/迭代器對(duì)象/引用對(duì)象/函數(shù)參數(shù)/返回類型/local變量/成員函數(shù)合作
當(dāng)const與non-const成員函數(shù)有實(shí)質(zhì)等價(jià)實(shí)現(xiàn)時(shí),另non-const版本調(diào)用const版本可避免重復(fù),期間涉及到轉(zhuǎn)型
思考:
寫的每一個(gè)函數(shù),都應(yīng)對(duì)參數(shù)和輸出進(jìn)行思考,應(yīng)該換成const嗎?應(yīng)該用引用還是指針還是值?
條款04
確定對(duì)象被使用前已先被初始化
核心:對(duì)內(nèi)置型對(duì)象要進(jìn)行手工初始化
注意:構(gòu)造函數(shù)最好使用成員初始陣列,不要在構(gòu)造函數(shù)內(nèi)使用賦值操作符,原因是后者徒增了一次成員構(gòu)造函數(shù)調(diào)用;初值陣列順序要和聲明中的順序相同.
對(duì)于"跨編譯單元之初始化次序"問題,應(yīng)以local static對(duì)象替代non-local static對(duì)象,參考單例模式的靜態(tài)局部對(duì)象做法.