1. 程式人生 > >通過這 9 本開源書,學好 C++

通過這 9 本開源書,學好 C++

書籍非常具有個人主觀性,程式設計類的書籍也不例外。但是不管書籍的風格,重點或者節奏如何,好的 C++ 程式設計書能帶讀者開啟一段引人入勝的旅程,拓展 C++ 語言的能力,向讀者展示如何使用C++來構建各種東西。

我精心挑選了一些 C++ 的書籍,這些書都非常值得一讀。我推薦的這 9 本書都是根據公共版權許可發行的書籍。在此之前,我先簡要介紹一下 C++。

C++ 是由Bjarne Stroustrup設計的,在1983年釋出了第一個版本。它是一門靜態型別,通用的,可移植程式語言,形式自由,多正規化,需要編譯。也因為它結合了高層次和低層次的語言特徵,被認為是一種中級語言。C++ 專為系統和應用程式程式設計而設計,它對 C 語言進行了擴充套件,自增操作符記為++,因此叫 C++。

C++ 一直是一門備受歡迎程式語言。例如,它被大量地用於嵌入式系統、銀行和電信領域。它是 C 語言的超集,保留了 C 語言的效率和便利的符號標記,同時提供更強大的型別檢查,多繼承,資料抽象,異常處理,運算子過載,泛型程式設計和麵向物件程式設計的功能。C++ 對許多其他語言產生了影響,包括 C#、Java 以及 C 語言的發展。

作者 Boris Schäling,570 頁

Boost C++庫在C++世界中有非常重要的影響力。這些行動式的庫為諸多工和結構提供了支援,包括多執行緒,容器,字串和文字處理,迭代器,線性代數,偽隨機數生成,元程式設計模板,併發程式設計,資料結構,影象處理,正則表示式和單元測試等。 Boost幾乎可以用於任何現代作業系統,包括Linux和Windows的衍生版本,同時也支援大多數現代編譯器。

本書介紹了72個非常實用的Boost庫,這些庫涵蓋的範圍非常廣,可以幫助程式設計師更容易地管理記憶體和處理字串。這些庫還提供了擴充套件標準庫的多種容器和其他資料結構,使用這些庫可以輕鬆地構建獨立於平臺的網路應用程式。

本書是值得新增到各類收藏的好東西。書裡的430個程式碼示例很好地闡明瞭這些庫的功能。

書中章節對記憶體管理,字串處理,容器,資料結構,演算法,通訊,流和檔案以及時間等問題進行了研究。稍後的章節繼續探討了函式,並行性和泛型程式設計問題。在結尾覆蓋了大量有關語言擴充套件,錯誤資訊以及數字處理,應用程式庫,設計模式和其他庫等內容。

Boost C++庫是根據Creative Commons Attribution – NonCommercial – NoDerivatives 4.0國際許可證釋出的。如果您喜歡隨身攜帶書籍,可以在Amazon上購買紙質版。電子版也可以在kindle上購買,電子書和 PDF 格式都可以。

作者 Frank B. Brokken,1029 頁

本書提供了有關C++程式語言的全方位教程,可以用作C ++程式設計課程的教科書。它適用於熟悉C語言或者類似C語言語法的使用者。

包括以下章節:

  • 名稱空間
  • 字串——C語言提供了基本的字串支援
  • I/O位元組流——提供了基於類概念的輸入/輸出(I / O)庫
  • 類——C針對不同型別資料結構提供了兩種方法。 C結構體儲存各種型別的資料成員,C聯合體也定義了各種型別的資料成員。本章介紹了另外一種結構——類,與結構體不同的是,類成員預設是私有的
  • 靜態資料和函式
  • 記憶體管理——用C++語言描述記憶體分配的運算子
  • 異常——允許C++程式執行受控的非本地返回命令,彌補了非區域性跳轉(longjmp)和設定區域性跳轉(setjmp)函式的缺點
  • 運算子過載——通用的運算子過載
  • 抽象容器
  • 繼承——派生的另一個術語。本章演示了基類指標可能用於指向派生類物件
  • 多型——繼承的一種特殊形態
  • 友元——介紹friend關鍵字及其使用原則
  • 成員指標——定義指向成員的指標及其使用,靜態成員指標和指標長度
  • 巢狀類——在巢狀類與其外圍類具有緊密概念關係的情況下使用
  • 標準模板庫(STL)——由容器,通用演算法,迭代器,函式物件,分配器,介面卡和資料結構組成的通用庫。這些演算法使用的資料結構是抽象的,可以與(實際上)任何資料型別一起使用
  • 泛型演算法——涵蓋STL的通用演算法
  • 函式模板——探討模板的句法特性。介紹了模板型別引數,模板非型別引數和函式模板的概念,並提供了多個模板示例
  • 類模板——討論構建和使用類模板
  • 高階模板使用——簡要介紹模板超程式設計的主要特徵和與模板相關的細微之處

這本書有HTML,PDF,PostScript和Txt格式。它可以自由分發,並根據GNU通用公共許可證的條款釋出。

作者 艾倫·尤斯特(Paul Ezust), 656頁

本書首先介紹C++基本組成,面向物件的概念,UML(統一建模語言)和核心Qt類。進而轉向更高層次的程式設計思想,Qt模型和設計模式。最後一部分嚴謹地印證了C++的重要特性,完整地覆蓋了函式,繼承和多型性方面的內容。

該書旨在用於大學課程,面向沒有C或C ++程式設計經驗的讀者,還為教學工作者提供了Qt示例,練習,解決方案和授課幻燈片。

這本書是Bruce Perens開源系列的一部分。 本系列的所有圖書均以Open Publication License V1.0或更新版本釋出。

作者Allen B. Downey,191頁

《如何像電腦科學家一樣思考》C++版本是一本簡潔文雅的介紹如何使用C++程式語言進行軟體設計的書。本書從最基本的概念開始,以閱讀者容易接受的速度逐漸增添新內容,旨在把沒有程式設計經驗的讀者培養成未來的開發人員。

本書的主要內容:

  • 變數,表示式和語句
  • 函式
  • 條件和遞迴
  • 豐富的函式
  • 迭代
  • 字串
  • 向量
  • 成員函式
  • 物件向量
  • 向量物件
  • 類和不變數
  • 檔案輸入/輸出和apMatrixes

本書是一本免費的C++版教科書,根據Creative Commons Attribution-NonCommercial 3.0 未本地化協議釋出。

作者 Jasmin Blanchette,Mark Summerfield,464頁

Qt的最新穩定版本是5.8。 本書指導讀者如何使用Qt 3編寫圖形介面程式,Qt 3最近一個版本的是在2004年釋出,但是有很多這本書對於Qt 4和Qt 5使用者來說仍然是有意義的。

本書需要讀者對C++有基本的瞭解,這不是一本面向初學者的書。

本書向讀者介紹了使用Qt編寫圖形介面應用程式的所有概念和實踐,對核心問題進行了詳細周密的講解,還提供一些專業前沿的學習資料。

這本書是Bruce Perens開源系列的一部分。本系列的所有圖書均以Open Publication License V1.0或更新版本釋出的。

作者 Pat Morin,336頁

本書講授了基本的資料結構設計和分析及在C ++中的實現。它涵蓋了序列(列表),佇列,優先順序佇列,無序字典,有序字典以及圖的資料結構的實現和分析。作者意圖在於為電腦科學專業的學生提供一條研究資料結構的免費途徑。但是本書不是一本介紹C++程式語言或C++標準模板庫的書,但是它有助於程式設計師瞭解STL資料結構如何實現以及為什麼這些實現是高效的。

書中章節涵蓋了基於陣列的列表,連結串列,分級連結串列,雜湊表,二叉樹(包括隨機二叉搜尋樹,替罪羊樹和紅黑樹)。稍後的章節介紹了堆,排序演算法(基於比較,計數排序和基數排序),圖,整型資料結構和外存搜尋。

這本書是根據知識共享署名許可頒發的。我們可以免費閱讀這本書的HTML,PDF版本,本書的LaTeX版本,Java / C ++ / Python原始碼可以從GitHub下載。還有平裝版購買。本書已被翻譯成斯洛維尼亞語和土耳其語。

作者 Julian Smart,Kevin Hock與Stefan CsomorBrifll,744頁

wxWidgets是一個流行的C++庫,它允許開發人員使用單一的程式碼庫為Windows,Mac OS X,Linux和其他平臺建立應用程式。它支援各種圖形庫。

本書的簡要介紹和入門章節涵蓋了以下內容:

  • 事件處理
  • 視窗基礎
  • 繪圖
  • 輸入事件處理
  • 使用sizers窗口布局
  • 使用標準對話方塊
  • 建立自定義對話方塊
  • 影象程式設計
  • 剪貼簿和拖放
  • 高階視窗類
  • 資料結構類
  • 檔案和流
  • 記憶體管理,除錯和錯誤檢查
  • 編寫國際化應用
  • 編寫多執行緒應用程式
  • wxSocket程式設計
  • 處理文件和檢視
  • 完善你的應用程式

這本書是Bruce Perens開源系列的一部分。本系列的所有圖書均以Open Publication License V1.0或更新版本釋出。

作者 Jeremy Hansen,160頁

書中的章節涵蓋變數,文字,常量,輸出輸入,資料型別和轉換,條件判斷(if,else和else if,switch語句),字串,迴圈,陣列,塊,函式和作用域。之後的章節對解決問題和問題定位進行了講述,包括前處理器,高階演算法,檔案I / O,指標,動態資料,類和抽象,編譯分離和STL。

這本書的大部分內容是由25位諾維奇大學的學生在一個黑客馬拉松周寫的,雖然不夠完美,但還是一本不錯的書。 它是根據基於Creative Commons Attribution-NonCommercial-ShareAlike 3.0.協議釋出許可證釋出的,也可以從亞馬遜購買紙質版。

作者 Brian Gough,144頁

本書主要介紹了 GNU C 和 C++編譯器:gcc 和 g ++。二者都是GNU編譯器集合(GCC)的一部分。

書中如何使用編譯器本身。作者根據多年來在郵件列表上發表的問題,引導讀者直接瞭解到GCC最重要的部分。

本書章節包括:

  • 簡介
  • 編譯C程式——介紹如何使用gcc編譯C程式。程式可能由單個原始檔或多個原始檔中編譯而成,也可以使用系統庫和標頭檔案
  • 編譯選項——描述了GCC中可用編譯器中常見的其他選項。這些選項對應不同的功能,例如用於設定庫和所包含檔案的搜尋路徑,配置額外的警告和診斷資訊,前處理器巨集和C語言
  • 使用前處理器——描述了GCC包內的GNU C前處理器cpp的使用,前處理器在原始檔編譯之前擴充套件了巨集。當GCC處理C或C ++程式時,預處理都會自動呼叫
  • 編譯除錯——提供-g除錯選項,用於在目標檔案和可執行檔案中儲存附加的除錯資訊。這些除錯資訊可以將錯誤資訊從特定的機器指令追溯到原始原始檔中相應的行
  • 編譯優化——GCC是一個優化編譯器。它提供了很多選項,旨在提高其生成的可執行檔案的速度或減小檔案大小
  • 編譯C ++程式——描述瞭如何使用GCC編譯用C ++編寫程式,以及針對於該語言的命令列選項
  • 平臺特定選項——介紹常見平臺的一些可用選項,如Intel和AMD x86選項,x86擴充套件選項,x86 64位處理器選項,DEC Alpha選項,SPARC選項,POWER / PowerPC選項,多體系架構支援以及浮點相關問題
  • 疑難解答(問題定位)——GCC提供了幾個幫助和診斷選項,來幫助使用者定位編譯過程中的問題
  • 與編譯器相關的工具——描述了很多與GCC結合使用的工具,包括用於建立庫的GNU歸檔器ar,以及GNU效能和覆蓋測試程式,gprof和gcov
  • 編譯器如何工作——對GCC如何將原始檔轉換為可執行檔案進行了更詳細地描述。編譯是一個多階段的過程,涉及多個工具,包括GNU編譯器本身(通過gcc或g++前端),GNU 彙編器as和GNU 連結器ld。在編譯過程中使用的一套完整工具集稱為工具鏈
  • 檢查編譯後的檔案——描述了多種有用的工具,用於檢查可執行檔案和目標檔案的內容
  • 常見錯誤訊息——描述 gcc和g ++生成的最常見的錯誤和警告訊息。每個案例都附有錯誤和警告資訊產生原因的描述,以及相應的例子和可能的解決方案和建議
  • 獲取幫助——如果讀者遇到簡介裡未涉及的問題,還有多種參考手冊更詳細地描述了GCC和語言相關的主題

本書根據 GNU 自由文件許可證釋出。