Item 01 視C 為乙個語言聯邦

2021-07-11 01:40:03 字數 1411 閱讀 9610

item 01: view c++ as a federation of languages

如今的c++已經是個多重范型程式語言:乙個同時支援過程形式(procedural)、物件導向形式(object-oriented)、函式形式(functional)、泛型形式(generic)、元程式設計性形式(metaprogramming)的語言。

這些能力和彈性使c++成為乙個強大的工具,但也會帶來很多疑惑:所有「適當方法」似乎都有例外。我們該如何理解這樣乙個語言呢?

最簡單的方法是將c++視為乙個由相關語言組成的聯邦而非單一語言。

在其某個子語言中,各種守則與通例都傾向於簡單、直觀易懂、並且容易記住。然而當你從乙個子語言移往另乙個子語言時,守則可能改變。為了理解c++,必須要認識其主要的子語言。幸運的是只有四個:

c。說到底c++仍是以c為基礎。區塊、語句、預處理器、內建資料型別、陣列、指標等統統來自c。許多時候c++對問題的解法其實不過就是較高階的c解法,但當你以c++內的c成分工作時,高效程式設計守則映照出c語言的侷限:沒有模板,沒有異常,沒有過載……

object-oriented c++。這部分也就是c with classes所要求的:classes、封裝、繼承、多型、virtual函式……等等。這一部分是物件導向設計在c++上的最直接實施。

template c++。這是c++的泛型程式設計部分,也是大多程式設計師經驗最少的部分。template相關考慮與設計已經瀰漫整個c++。由於templates威力強大,它帶來嶄新的程式設計范型,也就是所謂的template metaprogramming(tmp,模板元程式設計)。

stl。stl是個template程式庫。它對容器、迭代器、演算法以及函式物件的規則有極佳的緊密配合與協調。stl有自己特殊的辦事方式,當你同stl一起工作時候,你必須遵守它的規則。

c++並不是乙個帶有一組守則的一體語言:它是從四個子語言組成的聯邦,每個語言都有自己的規約。

c++高效程式設計守則視狀況而變化,取決於你使用c++的哪一部分。

條款01 視C 為乙個語言聯邦

條款01 視c 為乙個語言聯邦 view c as a federation of languages 內容 今天的c 已經是個多重範形程式語言 multiparadigm programming language 乙個同時支援過程形式 procedural 物件導向形式 object orient...

視C 為乙個語言聯邦

c 是個多重泛型程式語言,同時支援以下形式的語言 1 過程形式 2 物件導向形式 3 函式形式 4 泛型形式 5 元程式設計形式。理解c 的方法 將c 視為乙個由相關語言組成的聯邦而非單一語言。在其某個次語言中,各種守則與通例都傾向簡單 直觀易懂 並且容易記住。當從乙個次語言移至另乙個次語言,守則可...

條款1 視C 為乙個語言聯邦

view c as a federation of languages.今天的c 已經是個多重范型程式語言 multiparadigm programming language 乙個同時支援過程形式 procedural 物件導向形式 object oriented 函式形式 functional ...