Effective C++ 之 Item 1: 視C++為一個語言聯邦

來源:互聯網
上載者:User

標籤:

Effective C++ Chapter 1. 讓自己習慣C++(Accustoming Yourself to C++)      Item 1. 視C++為一個語言聯邦(View C++ as a federation of languages)

 

將 C++ 視為由四個次語言群組成的語言聯邦,在某個次語言中,各種規則與通例都傾向於簡單、直觀易懂、且容易記住。但從一個次語言移往另一個次語言,規則可能改變。

 

  • C —— C++ 以 C 為基礎。區塊(blocks)、語句(statements)、前置處理器(preprocessor)、內建資料類型(built-in data types)、數組(arrays)、指標(pointers)等統統來自 C 。
  • Object-Oriented C++ —— 這部分是 C with Classes 所訴求的: classes(包括建構函式和解構函式)、封裝(encapsulation)、繼承(inheritance)、多態(polymorphism)、virtual 函數(動態綁定)……等等。
  • Template C++ —— 這是 C++ 的泛型程式設計(generic programming)部分。
  • STL —— STL 是個 template 程式庫,對容器(containers)、迭代器(iterators)、演算法(algorithms)以及函數對象(function objects)的規約有極佳的緊密配合與協調。

 

不同的次語言有不同的規則,因而採用不用的策略。如對內建(也就是 C-like)類型而言 pass-by-value 通常比 pass-by-reference 高效,但對於 Object-Oriented C++ ,由於使用者自訂建構函式和解構函式的存在,pass-by-reference-to-const 往往更好。運用 Template C++ 時也是如此,因為此時你不知道所處理對象的類型。但一旦跨入 STL,因為迭代器和函數對象都是在 C 指標之上塑造出來的,所以對 STL 的迭代器和函數對象而言,舊式的 C pass-by-value 規則再次適用。

 

請記住:

  • C++ 高效編程規則視狀況而改變,取決於你使用 C++ 的哪一部分。

 

 

Effective C++ 之 Item 1: 視C++為一個語言聯邦

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.