写点什么

阅读者 (四):C++ 必知必会

  • 2011-01-20
  • 本文字数:1339 字

    阅读完需:约 4 分钟

【编者按】一本编程语言的好书,倘若能经受住时间的考验成为经典,那么它的作者必然是在这门语言浸淫多年达至炉火纯青地步的专家级人物。《C++ 必知必会》的作者 Stephen C. Dewhurst 是贝尔实验室最早的 C++ 程序员之一,有着 20 多年的 C++ 应用经验。他的履历与经验足以让读者心生信赖。然而,好的程序员不一定能写出好书。Stephen 是 C/C++ User Journal 的资深编辑,并担任了 C++ Report 的专栏作家,这就足够保证本书的写作质量。


这不是一本新书,之所以这样说,一是因为这已经是本书的第二版,二是因为本书的形式和内容与《Effective C++》《More Effective C++》等系列存在着某种千丝万缕的联系。

我读了很多“条款 1,2,3”式的 C++ 指导书,包括《C++ 必知必会》第一版在内,觉得受益匪浅。不过,是在我具备了一定的 C++ 开发经验之后重温这些书籍时才有收获的感觉。所以,虽然这本书的名字叫“必知必会 (Common Knowledge)”,看起来像是一本基础入门书,但是我不想推荐给初涉 C++ 的朋友阅读,我认为它更适合对 C++ 有过一些开发经验的人士阅读,一方面大家能够从书中体会到新鲜的知识并加以实践,另一方面能够巩固和理解已经熟悉的编程技巧。

本书的全部内容是 63 条 C++ 编程经验和技巧,基于作者 Stephen C. Dewhurst 在主持《C++ Report》专栏的内容整理而成,这 63 条内容涉及了 C++ 语言的方方面面,从指针定义到抽象基类,从设计模式到泛型算法,而且内容难易有别,请大家注意:本书的内容不是由易及难的条款清单,所以看书时不必拘泥于“顺序”,选取感兴趣的条款阅读即可。

具体到各个条款上,有些内容属于比较基础的编程经验,如:

● 5. 引用是别名而非指针
● 6. 数组形参
● 21. 重载与重写并不相同
● 24. 成员函数查找
● 28. 指针比较的含义 而有一些条款,可能需要慢慢体会,比如:
● 35. placement new
● 40. RAII(资源获取即初始化)
● 47. 模板局部特化
● 55. 模板的模板参数

借用“2/8 法则”,20% 的基础条款足够让 C++ 开发人员在工作中更进一步了,剩下 80% 的条款也许等大家在需要高级技巧时再看也不迟。毕竟,不是每一位开发人员都有机会在实际工作当中设计、开发一套模板库并在 operator new 上精益求精。

这本书中,我最喜欢的部分是有关“异常安全”的经验,因为异常安全处理在编程语言中,看似细枝末节实则关系重大,见微知著。这些经验是 C++ 语言标准规范和开发社区融合而来的产物,值得学习,比如:

● 38. 异常安全公理 > 1. 异常是同步的,并且只能发生在函数调用的边界。因此,诸如预定义类型的算术操作、预定义类型(尤其是指针)的赋值以及其他底层操作不会导致异常发生(它们可能会导致产生某种信号或中断,但这些东西不是异常)。

  1. 对象的销毁是异常安全的。该公理并非建立于技术基础之上,而是建立于 C++ 开发社区共识基础之上。按照惯例,析构函数、operator delete 以及 operator delete[ ] 不会抛出异常。
  2. 交换操作不会抛出异常。这同样是一个建立于 C++ 社区共识之上的公理,但他的公认度不如“禁止在析构函数中和销毁对象时抛出异常”那样来的广泛。乍看上去,交换(swap)不是一个太常见的操作,但是幕后它的使用很广泛,尤其在 STL 的实现中。

最后,推荐那些想深入提高 C++ 开发技巧的朋友看一下这本《C++ 必知必会》第二版中译本。

2011-01-20 16:004000
用户头像

发布了 501 篇内容, 共 283.8 次阅读, 收获喜欢 64 次。

关注

评论

发布
暂无评论
发现更多内容

利用人工智能自动找Bug

测吧(北京)科技有限公司

测试

大模型时代的自然语言处理利器

百度开发者中心

人工智能 大模型 Prompt

软件测试/人工智能丨利用人工智能 ChatGPT 自动进行测试需求分析

测试人

人工智能 软件测试

OpenTiny Vue 组件库3.12.0 发布:文档大优化!增加水印和二维码两个新组件

OpenTiny社区

开源 前端 前端ui组件库

人工智能 | 利用ChatGPT自动生成基于PO的数据驱动测试框架

测吧(北京)科技有限公司

测试

大模型:深度学习之旅与未来趋势

不会算法。

人工智能/自动化办公/自动化测试 | Python全栈开发班开始报名啦!

测吧(北京)科技有限公司

测试

理解Mysql索引原理及特性 | 京东物流技术团队

京东科技开发者

MySQL 数据库 索引

国产大模型与国外差距的深度解析

百度开发者中心

人工智能 大模型 ChatGPT

软件测试/人工智能|人工智能与自动化测试结合实战-探索人工智能在测试领域中的应用

霍格沃兹测试开发学社

生态发展 人才先行 | 深开鸿亮相首届OpenHarmony人才生态大会

新消费日报

把大模型当CPU,前阿里云首席安全科学家创业项目曝光

Openlab_cosmoplat

人工智能 | 如何利用ChatGPT自动生成测试用例思维导图

测吧(北京)科技有限公司

测试

人工智能 | 测试工程师如何突破职业瓶颈?

测吧(北京)科技有限公司

测试

人工智能 | 什么是字符串?

测吧(北京)科技有限公司

测试

给祖传系统做了点 GC调优,暂停时间降低了 90% | 京东云技术团队

京东科技开发者

jvm调优 GC调优 系统优化

Apifox 迭代更新:在线文档多格式导出、用户反馈问题优化,体验升级!

Apifox

程序员 开发工具 Apifox 接口工具 API 工具

MegEngine 正式支持 XLA 啦!

MegEngineBot

模型训练 开源框架 模型推理

33 | 字符串匹配基础(中 ,下):如何实现文本编辑器中的查找功能

鲁米

开发案例:使用canvas实现图表系列之折线图

HarmonyOS开发者

HarmonyOS

技术人对于文章标题的 4 点思考

Java 工程师蔡姬

技术人 21 天技术人写作行动营

Nougat:结合光学神经网络,引领学术PDF文档的智能解析、挖掘学术论文PDF的价值

汀丶人工智能

人工智能

输入更多字符以增强大模型学习

百度开发者中心

人工智能 深度学习 大模型

LED显示屏行业:消费驱动和零售渠道的新发展

Dylan

技术 LED显示屏 led显示屏厂家 消费

软件测试/人工智能丨利用人工智能 ChatGPT 自动进行测试需求分析

测试人

人工智能 软件测试

详细了解云堡垒机的作用,提高企业数据信息安全

行云管家

云计算 云服务 数据安全 企业上云 云堡垒机

使用 Taro 开发鸿蒙原生应用 —— 当 Taro 遇到纯血鸿蒙 | 京东云技术团队

京东科技开发者

taro 前端 Web 鸿蒙Next

软件测试/测试开发|Docker+Jmeter+InfluxDB+Grafana 搭建性能监控平台

霍格沃兹测试开发学社

小程序开发实战案例四 | 小程序标题栏如何设置

盐焗代码虾

支付宝 小程序开发 导航栏

阅读者(四):C++必知必会_Java_崔康_InfoQ精选文章