天天看點

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

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

C++是一個多重泛型的程式設計語言,支援面向過程、面向對象、函數形式、泛型形式、元程式設計形式的語言。四種次語言:

  1. C
  • 面向過程
  • C++語言是在C語言的基礎上進行的擴充,一開始被認為是C with class。這部分包含C語言的:區塊(blocks),語句(statements),預處理(preprocessor),内置資料類型(built-in data types)、數組(arrays)、指針(pointers)等。C++是C語言的超集,以C為基礎,添加了面向對象、模闆,STL等特性。如果用C類型,就顯示出了局限:沒有模闆(templates),異常(exceptions),重載(overloading)。
  1. Object-Oriented C++
  • 面向對象
  • C with Class所追求的:classes(類:包括類的屬性和方法,構造和析構函數),封裝(encapsulation),繼承(inheritance),多态(polymorphism),virtual函數(虛函數,動态綁定)等等。這一部分是面向對象在C++上的最直接的實施。
  1. Template C++
  • 泛型程式設計
  • 泛型程式設計是一種語言機制,通過它可以實作一個通用的标準的容器庫,泛型程式設計可以在多種類型上都能操作,可以重複使用。泛型是一種抽象資料類型,但是泛型不屬于面向對象,而是面向對象的補充。- 而由于templates強大的威力,也帶來了新的我程式設計泛型——metaprogramming(TMP,模闆元程式設計)。編譯器使用模闆産生暫時性的源碼,然後再和剩下的源碼混合并編譯。元程式設計最大的目的就是用代碼生成/操縱代碼。
  1. STL
  • STL是一個惠普實驗室開發的模闆程式庫,包含了容器(containers)、疊代器(iterators)和算法(algorithms)以及函數對象(function objects)的規約有極佳的緊密配合和協調。STL的目的是标準化元件,這樣就不需要重新開發,可以直接使用現成的元件。

繼續閱讀