許多程式設計師總結:C++ 是獨立語言,非建立在 C 基礎上,可直接學習。分享入門經驗:
庫是程式碼集合,避免重複勞動。按組織思想分:函式庫(面向過程,封裝常用功能為函式);類別庫(面向物件,封裝任務為類別,如 File 類含 open/close/read/write 等方法)。按標準分:標準庫(C++ 標準規定必須有,如 STL——含 vector、list 等容器與演算法),屬語言一部分,經標準化,所有編譯平台必含;非標準庫(MFC、VCL、Qt 等廠商自製,非語言一部分)。
API 是作業系統提供給程式設計師的功能。DOS 用中斷方式「告訴」作業系統;Windows 提供一系列函式(編譯好置於 .dll),編譯器自動連結,稱 API 函式(成千上萬,比 DOS 中斷複雜多,提供更完善服務)。學習時不可能全記,掌握常用即可,隨用隨查,MSDN 為權威資料集。
「我們的系統已極度複雜,為避開 C++ 複雜性而不用它(Linus 做法),無異於因噎廢食。」在所有適用 C/C++ 領域,C++ 優於 C:更安全型別檢查、更好抽象機制、更優秀庫。例外:專案小、無抽象機制需求(甚至 ADT、RAII、異常、智能指標/容器皆用不到),用 C 無問題。底線:移除非必要複雜性、保留本質特性、簡化模型、消除歷史包袱後,即便反對者也難找理由拒絕。理性反對唯一理由:複雜性帶來的混亂抵消甚至超過抽象機制與庫在特定專案的效益。