effective c++之讓自己習慣C++

#define Max(a, b) (a)>(b) ? (a) : (b) 
//在遇到Max(++a, b )這樣的調用的時候,總會帶來副作用.但我們又總想宏定義帶來的效率,該怎麼辦呢? inline
..
template<typename T>

inline T Max(const T& a, const T& b)

{

         return a > b ? a : b;

}


一.視C++爲一個語言聯邦

其實也就是說C++組成,包括四部分:

1.      c語言;

2.      Object-Oriented C++,即面向對象,什麼封裝,繼承和多態等等;

3.      Template C++;

4.      STL;

二.儘量以const enum inline替換#define

1.      const 與 #define

#define AspectRatio 1.653

const double AspectRatio = 1.653;

 

預處理器”盲目地將宏名稱替換爲1.653”可能導致目標碼出現多份1.653,若改用常量,絕不會出現此種情況.

2.      enum 與 #define

這個似乎不容易遇到

3.      incline與#define

最典型的例子:

 

這樣,即獲得宏一樣的效率,又不會有副作用.

 

三.儘可能用const

 

四.確保對象被使用前已被初始化

1.      爲內置對象進行手工初始化,因爲C++不保證初始化它們.

2.      構造函數最好使用成員初值列,而不要在構造函數本體內使用賦值操作.初值列列出的成員變量,其排列次序應該和它們在class中的聲明次序相同.

3.      爲免除”跨編譯單元之初始化次序問題”,以localstatic 對象替換 non-local static 對象.

 

 

發佈了26 篇原創文章 · 獲贊 3 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章