天天看點

改善程式與設計的55個具體做法之一:視C++為語言聯邦

C++以高效、強大著稱。然而想要完全掌握并靈活應用并非易事。

C++從最初的 C with class不斷擴充和發展,至使其功能強大同時變得異常繁雜。書中作者巧妙的将C++比作語言聯邦。各個子產品功能比作次語言。在不同的次語言中應用不同的規則使程式健壯高效。

一下為作者分出的四個次語言:

  • C。即仍然使用C語言編寫程式
  • Object-Oriented C++。在C的基礎上引入類、封裝、繼承、多态、虛函數等特性。
  • Template C++。即C++的泛型程式設計
  • STL,即在使用标準模闆庫,需要遵守STL的規則

不同場景下使用不同的規則,文中給出了一個形象的例子:

就内置類型而言(即C下)使用值傳遞(pass-by-value)比引用傳遞(pass-by-reference)高效,而在使用者自定義類型下,引用傳遞往往更好。然而一旦進入STL,疊代器和函數對象都是在C指針之上塑造出來的,是以對于STL疊代器和函數對象而言,舊式C的pass-by-value又再次适用。

繼續閱讀