为什么选择 C++ Primer_CN(第 5 版)
2011年,C++ 标准委员会发布了lSO C++标准的一个重要修订版。
一种优秀的编程语言,一定要对于计算,这件事情实现一个完整和自治的抽象。
十几年来编程语言领域的竞争,除却实现质量之外,基本上是在比拼抽象的设计。而 C 语言之所以四十年长盛不衰,根本在于它对于现代计算机提供了 一个底层的高级抽象,凡是比它低的抽象都过于简陋,凡是比它高的抽象都可以用 C 语言构造出来。
C++成功的根本原因,恰恰是因为它虽然试图提供一些高级的抽象机制,但是其根基与 C 在同一层面。正因为如此每当你需要走下去直接与硬件对话时,C++ 成为 C 之外唯一有效率的选择。
C++ 同时支持 4 种不同的编程风格 C 风格、基于对象、面向对象和泛型。
事实上,把微软的 COM 也算进来的话,还可以加上一种"基于组件"的风格。
这么多的风格共存于一种语言,就是其强大抽象机制的证明。但是,在 C++11 以前,C++ 的抽象可以说存在若干缺陷,其中最严重的是缺少自动内存管理和对象级别的消息发送机制。今天看来,C++98 只能说是特定历史条件造成的半成品,无论是从语言机制,还是标准库完备程度来说,可以说都存在明显的、不容忽略的缺陷。其直接后果,就是优雅性的缺失和效率的降低。
C++11 出来之后,增强的语言机制和大为完善的标准库,为 C++语言的编程风格带来了革命性的变化。如果能够纯熟地运用 C++11 的新特征、新机制,那么就能够形成一种简洁优雅的 C忡编程风格,以比以前更高的效率、更好的质量进行软件开发。对于这种新的风格,我认为"直觉、自然"是最佳的描述。也就是说,解决任何问题不必拘泥于什么笼盖一 切的编程思想,也不再沉翻于各种古怪的模板技巧中无法自拔,而是能够根据那个问题本身采用最自然、最符合直觉的方式。
C++ 有自己的一套思维方式,比如容器、算法、作为概念抽象的对象等,很大程度上这套思维方式确实是合乎直觉的。只有到了 C++11 这一代,C++语言的高级抽象才基本完备,这样一种风格才可能真正落实。因此可以说 C++11 对于 C++98 而言,不是一次简单的升级,而是一次本质的跃升。
今天的 C++ 学习者是非常幸运的,可以在 C++11 这个基础上大步向前,不必再因为那些语言的缺陷和过度的技巧而烦恼。大家静下心来认真读几本书,可以打下很好的基础。
以上节选自原书推荐序2
现代 C++语言可以看作是三部分组成的
- 低级语言 ,大部分继承自 C 语言。
- 现代高级语言特性,允许我们定义自己的类型以及组织大规模程序和系统。
- 标准库,它利用高级特性来提供有用的数据结构和算法。
大多数 C++教材按照、语言进化的顺序来组织其内容。首先讲授 C++的 C 子集,然后将C++中更为抽象的一些特性作为高级话题在书的最后进行介绍。
这种方式存在两个问题:
读者会陷入那些继承自低级程序设计的细节,从而由于挫折感而放弃;
读者被强加学习一些坏习惯,随后又需要忘记这些内容。
本书从一开始就介绍一些语言特性,能让程序员忽略那些继承自低级程序设计的细节。例如,在介绍和使用内置的算术和数组类型时,执们还连同介绍和使用标准库中的类型 string 和 vector。使用这些类型的程序更易写、易理解且更少出错。
首先在第 1 部分和第 2 部分介绍了 c++ 语言和标准库的基础内容。这两部分包含的内容足够你编写出有意义的程序,而不是只能写一些玩具程序。大部分程序员基本上都市耍掌据本书这两部分所包含的所有内容。
通过使用标准库定义的抽象设施,使你更加适应高级程序设计技术。标准库设施本身是一组抽象数据类型,通常用 c++ 编写。我们讲摆 c++ 语言的一个经验是,在先学习了使用设计良好的抽象类型后,读者会发现理解如何构造自己的类型更容易了。
花三个月左右时间把cpp primer第五版(plus暂时放一边)除模板外精读一遍,尤其是面向对象和 STL 部分务必做到滚瓜烂熟,着重看 cpp11 部分、智能指针。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了