专栏名称: Linux爱好者
伯乐在线旗下账号,「Linux爱好者」专注分享 Linux/Unix 相关内容,包括:工具资源、使用技巧、课程书籍等。
目录
相关文章推荐
51好读  ›  专栏  ›  Linux爱好者

通过这 9 本开源书,学好 C++

Linux爱好者  · 公众号  · linux  · 2017-05-09 22:19

正文

(点击上方蓝字,快速关注我们)


编译:伯乐在线/李大萌,英文:Steve Emms

如有好的文章投稿,请点击 → 这里查看详情


书籍非常具有个人主观性,编程类的书籍也不例外。但是不管书籍的风格,重点或者节奏如何,好的 C++ 编程书能带读者开启一段引人入胜的旅程,拓展 C++ 语言的能力,向读者展示如何使用C++来构建各种东西。

我精心挑选了一些 C++ 的书籍,这些书都非常值得一读。我推荐的这 9 本书都是根据公共版权许可发行的书籍。在此之前,我先简要介绍一下 C++。

C++ 是由 Bjarne Stroustrup 设计的,在1983年发布了第一个版本。它是一门静态类型,通用的,可移植编程语言,形式自由,多范式,需要编译。也因为它结合了高级(high-level)和低级(low-level)的语言特征,被认为是一种中级语言。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 自由文档许可证发布。

微信不支持站外链接,点击「阅读原文」跳转查看对应开源书籍链接。


推荐阅读:


通过这 9 本开源好书学习 C 语言



看完本文有帮助?请分享给更多人

关注「CPP开发者」,提升C/C++技能