0 導讀

  本書的最佳用途就是徹底瞭解C++如何行爲、爲什麼那樣行爲,以及如何運用行爲形成優勢。盲目應用書中條款是非常不合適的。如果沒有好理由,你或許不該違反任何一個條款。
  

術語

  所謂聲明式(declaration)是告訴編譯器某個東西的名稱和類型(type),但略去細節。
  每個函數的聲明揭示其簽名式(signature),也就是參數和返回類型。一個函數的簽名等同於該函數的類型。
  定義式(definition)的任務是提供編譯器一些聲明式所遺漏的細節。對對象而言,定義式式編譯器爲此對象拔髮內存的地點。對function 或function template而言,定義式提供了代碼的本體。對class或class template而言,定義式列出了它們的成員。
  初始化(Initialization)是“給予對象初值”的過程。對用戶自定義類型的對象而言,初始化由構造函數執行。所謂default構造函數是一個可被調用而不帶任何實參者。這樣的構造函數要不沒有參數,要不就是每個參數都有缺省值。構造函數聲明爲explicit,可阻止它們被用來執行隱式類型轉換。被聲明爲explicit的構造函數通常比non-explici兄弟更受歡迎,因爲它們禁止編譯執行非預期(往往也不被期望)的類型轉換。
  copy構造函數被用來“以同型對象初始化自我對象”,copy assignment操作符被用來“從另一個同型對象中拷貝其值到自我對象”。
  

class Widget{
public :
    Widget();//default構造函數
    Widget(const Widget& rhs);//copy構造函數
    Widget& operator=(const Widget& rhs);//copy assignment操作符
};
Widget w1;//調用default構造函數
Widget w2(w1);//調用copy構造函數
w1 = w2;//調用copy assignment操作符
Widget w3 = w2;//調用copy構造函數

  STL是所謂標準模板庫(Standard Template Library),是C++標準程序庫的一部分,致力於容器、迭代器、算法及相關機能。
  所謂客戶(client)是指某人或某物,他使用你寫的代碼(通常是一些接口)。函數的客戶是指其使用者,也就是程序中調用函數(或取其地址)的那一部風,也可以說是編寫並維護那些代碼的人。Class或template的客戶則是指程序中使用class或template的那一部分,也可以說是編寫並維護那些代碼的人。
  當我在程序批註中提到構造函數和析構函數是時,有時會使用縮寫字ctor和dtor。
  

命名習慣

  我最喜愛的兩個參數名稱lhs和rhs分別代表“left-hand side”(左手端)和“right-hand side”(右手端)
  常將“指向一個T型對象”的指針命名爲pt,意思是“pointer to T”。
  對於references有類似習慣:rw可能是個reference to Widget,ra 則是個reference toAirplane。
  當討論成員函數時,偶爾會以 mf爲名。

關於線程(Threading Consideration)

TR1 和Boost

  TR1(“Technical Report 1”)是一份規範,描述加入C++標準程序庫的諸多新機能。這些機能以新的class template 和function template形式體現,針對的題目有hash tables,reference-counting smart pointers, regular expressions,以及更多。所有TR1組件都被置於命名空間tr1內,後者嵌套於命名空間std內。
  Boost是個組織,亦是一個網站(http://boost.org),提供可移植、同僚複審、源代碼開放的C++程序庫。大多數TR1機能是以Boost的工作爲基礎。在編譯器廠商與其C++程序庫中含入TR1之前,對那些搜尋TR1實現品的開發人員而言,Boost網站可能是第一個逗留點。Boost提供比TR1更多的東西,所以無論如何值得了解它。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章