1. 程式人生 > 其它 >【Effective C++】讓自己習慣C++

【Effective C++】讓自己習慣C++

條款01:視C++為一個語言聯邦

C++的四個組成部分:C、C With Classes、Template C++、STL

 

條款02:儘量以const、enum、inline替換#define

  • 常量用const和enums替換#define
  • 用inline函式替換帶參巨集(#define)

 

條款03:儘可能使用const

  • const修飾函式返回值:降低操作錯誤導致的意外
  • const修飾成員函式:表明該函式不能改變物件內容、操作const物件(const修飾成員函式可作為過載條件、const成員函式不能呼叫非const成員函式)
 1 class Text{
 2 private:
3 std::string text; 4 public: 5 ... 6 const char& operator[](std::size_t pos) const 7 {return text[pos];} //const版本,在const物件上使用時過載此函式 8 9 char& operator[](std::size_t pos); 10 {return text[pos];} //非const版本 11 12 char& operator[](std::size_t pos) const; 13
{return text[pos];} //不正確的const版本,const修飾函式說明該函式並不能修改成員但返回值卻留出了修改的餘地 14 15 };

 

條款04:確定物件被使用前已被初始化

  • 對每個內建型別物件進行初始化
  • 建構函式初始化列表的順序和類中的宣告順序保持一致
  • C++對non-local static物件的初始化順序沒有定義,local static物件在首次呼叫期間初始化,因此為了避免初始化順序造成的問題可以用local static物件替代non-local static物件。