天天看點

Effective C++ 讀書筆記 條款01

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

    c++最初的名稱C with Classes,一開始隻是C加上一些面向對象特性。今天的C++已經是個多重範型程式設計語言,一個同時支援過程形式、面向對象形式、函數形式、泛型形式、元程式設計形式的語言。在使用C++的過程中會遇到這樣一種問題:所有“适當用法”似乎都有例外?

    最簡單的方法是把c++看成一個由相關語言組成的聯邦而非單一語言。即把C++看成由幾個次語言組成,當你從一個次語言轉換到另一個次語言時,守則可能改變。

    C++主要由四個次語言組成:C、Object-Oriented C++、Template C++、STL。每個次語言都有自己的規範。是以C++高效程式設計守則視狀況而改變,取決于你使用C++的哪一部分。

    當從一種次語言切換到另一個次語言,會導緻高效程式設計守則改變。例如,對内置類型而言(C-like),pass-by-value通常比pass-by-reference高效,但當你從C part of C++移往Object-Oriented C++,由于使用者自定義構造函數和析構函數的存在,pass-by-reference-to-const往往更好。疊代器和函數對象都是在C指針之上塑造出來的,是以對STL的疊代器和函數對象而言,舊式的C pass-by-value守則再次适用。

繼續閱讀