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

GabRatliff 7年前發布 | 49K 次閱讀 開源 C/C++開發 C/C++

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

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

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

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

《Boost C++ 類庫》(The Boost C++ Libraries)

作者 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 格式都可以。

《C++注解》(C++ Annotations)

作者 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通用公共許可證的條款發布。

《通過Qt4 介紹C++中的設計模式》(Introduction to Design Patterns in C++ with Qt 4, An)

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

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

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

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

《如何像計算機科學家一樣思考(C++篇)》(How to Think Like a Computer Scientist: C++)

作者Allen B. Downey,191頁

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

本書的主要內容:

  • 變量,表達式和語句
  • 函數
  • 條件和遞歸
  • 豐富的函數
  • 迭代
  • 字符串
  • 向量
  • 成員函數
  • 對象向量
  • 向量對象
  • 類和不變量
  • 文件輸入/輸出和apMatrixes

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

《基于Qt3的C++ 圖形界面編程》(C++ GUI Programming with Qt 3)

作者 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或更新版本發布的。

《開放式數據結構( C++版)》(Open Data Structures (in C++))

作者 Pat Morin,336頁

本書講授了基本的數據結構設計和分析及在C ++中的實現。它涵蓋了序列(列表),隊列,優先級隊列,無序字典,有序字典以及圖的數據結構的實現和分析。作者意圖在于為計算機科學專業的學生提供一條研究數據結構的免費途徑。但是本書不是一本介紹C++編程語言或C++標準模板庫的書,但是它有助于程序員了解STL數據結構如何實現以及為什么這些實現是高效的。

書中章節涵蓋了基于數組的列表,鏈表,分級鏈表,哈希表,二叉樹(包括隨機二叉搜索樹,替罪羊樹和紅黑樹)。稍后的章節介紹了堆,排序算法(基于比較,計數排序和基數排序),圖,整型數據結構和外存搜索。

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

《使用wxWidgets跨平臺GUI編程》(Cross-Platform GUI Programming with wxWidgets)

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

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

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

  • 事件處理
  • 窗口基礎
  • 繪圖
  • 輸入事件處理
  • 使用sizers窗口布局
  • 使用標準對話框
  • 創建自定義對話框
  • 圖像編程
  • 剪貼板和拖放
  • 高級窗口類
  • 數據結構類
  • 文件和流
  • 內存管理,調試和錯誤檢查
  • 編寫國際化應用
  • 編寫多線程應用程序
  • wxSocket編程
  • 處理文檔和視圖
  • 完善你的應用程序

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

《Rook的C++指南》(The Rook’s Guide to C++)

作者 Jeremy Hansen,160頁

書中的章節涵蓋變量,文本,常量,輸出輸入,數據類型和轉換,條件判斷(if,else和else if,switch語句),字符串,循環,數組,塊,函數和作用域。之后的章節對解決問題和問題定位進行了講述,包括預處理器,高級算法,文件I / O,指針,動態數據,類和抽象,編譯分離和STL。

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

《GCC概述》(An Introduction to GCC)

作者 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 自由文檔許可證發布。

 

來自:http://blog.jobbole.com/110975/

 

 本文由用戶 GabRatliff 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!