BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 崔康 关注 1 他的粉丝 发布于 2011年1月21日. 估计阅读时间: 4 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

【编者按】一本编程语言的好书,倘若能经受住时间的考验成为经典,那么它的作者必然是在这门语言浸淫多年达至炉火纯青地步的专家级人物。《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.    异常是同步的,并且只能发生在函数调用的边界。因此,诸如预定义类型的算术操作、预定义类型(尤其是指针)的赋值以及其他底层操作不会导致异常发生(它们可能会导致产生某种信号或中断,但这些东西不是异常)。
2.    对象的销毁是异常安全的。该公理并非建立于技术基础之上,而是建立于C++开发社区共识基础之上。按照惯例,析构函数、operator delete以及operator delete[ ]不会抛出异常。
3.    交换操作不会抛出异常。这同样是一个建立于C++社区共识之上的公理,但他的公认度不如“禁止在析构函数中和销毁对象时抛出异常”那样来的广泛。乍看上去,交换(swap)不是一个太常见的操作,但是幕后它的使用很广泛,尤其在STL的实现中。


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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT