具体描述
职业C++程序员必备常识,初学者登堂入室的阶梯,C++界20年经验结晶。本书作者资深C++专家Stephen C.Dewhurst从业界多年来积累的宝贵经验中萃取了C++开发所应必备但常常被误解的知识,并在阐述时过滤掉了不必要的复杂性。你从何时(或者哪里)开始学习C++并不重要,但在迈出下一步之前,使用本书作为指南,可以确保轻松上路!
作者简介
stephen c. dewhurst,贝尔实验室最早的c++程序员之一。他有着20多年的c++应用经验,涉及的应用领域包括编译器设计、安全交易、电子商务以及嵌入式电信产品等。他是c++ gotchas(addison-wesley, 2003)的作者,并是programming in c++(第2版)(prentice hall, 1995)的作者之一。stephen是the c++ source顾问委员会的成员之一,是c/c++ users journal的资深编辑,以及c++ report专栏作家。他还是两款c++编译器推选者,并发表了大量关于编译器设计和c++编程技术的文章。
荣耀,南京师范大学教师,一名c++讲师和研究者。译有《imperfect c++中文版》、《c++ templates全览》以及《c++模板超编程》(中文繁体版)等。他原任电力自动化研究院工程师与项目经理,是数个企业级信息系统项目负责人。
目录信息
条款2 多态.
条款3 设计模式
条款4 stl
条款5 引用是别名而非指针
条款6 数组形参
条款7 常量指针与指向常量的指针
条款8 指向指针的指针
条款9 新式转型操作符
条款10 常量成员函数的含义
条款11 编译器会在类中放东西
条款12 赋值和初始化并不相同
条款13 复制操作
条款14 函数指针
条款15 指向类成员的指针并非指针
条款16 指向成员函数的指针并非指针
条款17 处理函数和数组声明
条款18 函数对象
条款19 command模式与好莱坞法则
条款20 stl函数对象
条款21 重载与重写并不相同
条款22 template method模式
条款23 名字空间
条款24 成员函数查找
条款25 实参相依的查找
条款26 操作符函数查找
条款27 能力查询
条款28 指针比较的含义
条款29 虚构造函数与prototype模式
条款30 factory method模式
条款31 协变返回类型
条款32 禁止复制..
条款33 制造抽象基类
条款34 禁止或强制使用堆分配
条款35 placement new
条款36 特定于类的内存管理
条款37 数组分配
条款38 异常安全公理
条款39 异常安全的函数
条款40 rall
条款41 new、构造函数和异常
条款42 智能指针
条款43 auto_ptr非同寻常
条款44 指针算术
条款45 模板术语
条款46 类模板显式特化
条款47 模板局部特化
条款48 类模板成员特化
条款49 采用typename消除岐义
条款50 成员模板
条款51 采用template消除歧义
条款52 针对类型信息的特化
条款53 嵌入的类型信息
条款54 traits
条款55 模板的模板参数
条款56 policy
条款57 模板实参推导
条款58 重载函数模板
条款59 sfinae
条款60 泛型算法
条款61 只实例化要用的东西
条款62 包含哨位
条款63 可选的关键字
参考文献
索引
代码示例索引
· · · · · · (收起)
读后感
本书的定位是一本中阶C++书籍,作者也是按这个思路去写的,所以每个item都很短,不超过两三页。但是作者太过贪心了,在这本不到两百页的技术书籍中写了63个item,囊括了C++的语言特性、设计模式、模板进阶使用等。设计模式和C++模版不是三言两语就可以讲明白的,除非你已经对这...
本书的定位是一本中阶C++书籍,作者也是按这个思路去写的,所以每个item都很短,不超过两三页。但是作者太过贪心了,在这本不到两百页的技术书籍中写了63个item,囊括了C++的语言特性、设计模式、模板进阶使用等。设计模式和C++模版不是三言两语就可以讲明白的,除非你已经对这...
本书的定位是一本中阶C++书籍,作者也是按这个思路去写的,所以每个item都很短,不超过两三页。但是作者太过贪心了,在这本不到两百页的技术书籍中写了63个item,囊括了C++的语言特性、设计模式、模板进阶使用等。设计模式和C++模版不是三言两语就可以讲明白的,除非你已经对这...
本书的定位是一本中阶C++书籍,作者也是按这个思路去写的,所以每个item都很短,不超过两三页。但是作者太过贪心了,在这本不到两百页的技术书籍中写了63个item,囊括了C++的语言特性、设计模式、模板进阶使用等。设计模式和C++模版不是三言两语就可以讲明白的,除非你已经对这...
这本书与《Effective C++》属于同一类型,但二者的内容重合度不高,而且我认为比Effective C++更值得一读。原因是Effective C++更偏重C++语言的特点;而本书更偏重于多数程序员的日常开发,包含了一些设计思想。读本书可以感觉到作者是厚积薄发型的,本书虽然是面向初学者,但...
用户评价
我是一个偏爱自学和钻研细节的技术人员,通常书籍中的“最佳实践”部分对我吸引力最大。这本书在这方面做得极其出色,它仿佛是一本资深架构师的“备忘录”,记录了在实际项目中避免踩坑的经验之谈。无论是关于异常安全性的保证,还是RAII原则的多种高级应用场景,书中都给出了非常细致的图示和案例分析,清晰地勾勒出了“正确的做法”与“常见的错误做法”之间的界限。有一章关于编译期优化的讨论,对我解决一个困扰已久的性能瓶颈提供了关键思路。它没有直接给出解决方案,而是通过分析编译器的优化假设和代码结构对优化的影响,引导我重新审视了数据布局和函数内联的策略。这种启发式的教学方法,培养了读者独立解决复杂问题的能力,而不是仅仅依赖于照搬书中的例子。
这本书的排版和逻辑编排也体现了对读者的尊重。章节之间的过渡自然流畅,知识点的引入遵循了人类认知的自然规律,从具象到抽象,从基础到高级。最让我印象深刻的是作者在解释“右值引用和移动语义”那一节的处理手法。这是一个公认的难点,许多书籍都试图用过于简化的方式带过,结果反而加深了读者的困惑。然而,这里的讲解却极具耐心,它不仅解释了Rvalue和Lvalue的区别,更深入挖掘了移动构造函数和移动赋值运算符存在的深层原因——性能优化。作者巧妙地结合了资源管理的概念,让“移动”不再是一个抽象的语法特性,而成为了提高程序运行效率的实用工具。这种对复杂概念的庖丁解牛般的拆解能力,是这本书最核心的竞争力,它让C++的强大功能变得触手可及,真正兑现了“必知必会”的承诺。
这部著作,以其深邃的洞察力和严谨的结构,为我打开了一扇通往现代软件工程实践的大门。它不仅仅是罗列了一堆晦涩难懂的语法规则,更像是一位经验丰富的导师,循循善诱地引导读者理解C++这门语言背后的设计哲学和工程考量。初读之下,我被其对底层内存管理的细致剖析所折服,作者没有回避那些“脏活累活”,而是直面指针、引用和生命周期这些核心概念,用清晰的比喻和恰到好处的代码示例,将原本令人望而生畏的复杂性,拆解成了可以逐步掌握的知识模块。特别是关于面向对象范式的深入探讨,它超越了简单的继承和多态,触及了抽象的本质,让人开始思考如何构建健壮、可扩展的软件架构。我发现自己不再满足于仅仅让代码跑起来,而是开始追求代码的优雅和效率,这无疑是阅读过程中最大的收获之一。这本书的行文风格沉稳而富有启发性,即便是对于那些自认为已经掌握了C++基础的人来说,也能从中挖掘出新的理解维度,从而在实际项目中做出更明智的技术决策。
这本书的阅读体验,与其说是在“学习”,不如说是在进行一场深度的“技术对话”。作者的表达方式非常个人化,仿佛他正坐在我的对面,用他丰富的项目经验来“点拨”我。尤其是在讨论标准库(STL)的内部机制时,那种对设计者意图的揣摩和还原,令人拍案叫绝。比如,它对容器选择的权衡分析,远比查阅官方文档来得直观和有说服力——它不仅告诉你“是什么”,更告诉你“为什么”要这么设计,以及在什么场景下应该如何取舍。这种深层次的“知其所以然”,极大地提升了我的编程直觉。此外,书中对新标准的跟进也做得非常及时和到位,它将C++17、C++20中的新特性融入到核心概念的讲解中,而不是作为附录草草了事,确保了读者所学的知识是面向未来的。这使得这本书的价值得以长期保持,不会因为语言的快速迭代而迅速过时。
坦白说,一开始我对这类“必知必会”的标题抱持着一丝怀疑,总觉得它们往往会流于表面,无法触及技术的精髓。然而,这本关于C++的书籍,却以一种近乎偏执的认真态度,构建了一个全面且深入的学习路径。它非常注重实战性,书中提供的代码片段不仅是教科书式的演示,更是经过精心打磨、可以直接应用于生产环境的范例。我特别欣赏作者在处理模板元编程和并发编程这两个前沿且困难的领域时的处理方式。作者没有采取“一笔带过”的敷衍态度,而是循序渐进,先从基础的并发原语讲起,逐步过渡到现代C++提供的更高级别的抽象工具,比如原子操作和内存模型。这种由浅入深的节奏,极大地降低了学习曲线的陡峭程度,使得我这个在多线程领域略有挫败感的读者,也重新找回了信心。读完之后,我感觉自己对如何编写安全、高效的多核程序有了脱胎换骨的认识,那些过去写出来的“可能有风险”的代码,现在也找到了清晰的改进方向。
C++,你才刚刚上路呢!P.S. 关于模版的那一部分先放着,回头慢慢看
翻译得不错
C++的Tip类书籍咋就那么多呢...
后边赶脚没太看懂,有点难度
涉及到的点不多,且没有出彩的地方,但内容跟书名很吻合,是programmer「必知必会」的而已。练C++始终是要不断看各种书、搞各种实践。