我大学的时候学《论语》,老师给我们说了一句至今让我记忆犹新的话:如果你想要成为国 学大师,你需要有大师在你的身边指引。 C++是一门比较难以精通的语言,想要成为大师需 要有大师的引导。很不幸的是大师可遇而不可求,幸运的是网络时代让我们离大师越来越近 ,甚至触手可及。接收大师的熏陶的一种方式是拜读他们的作品,你可以去读他们的书或者 你也可以去读他们的博客。
读书札记之 —— 《程序员修炼之道》
这是第一本我刚看完书评就想写些什么的书,读书在于感悟,而悟道却往往在一瞬之间。以 前看很多书,老觉得作者说的也不过尔尔,现在想来是自己的功力不够,还体会不到作者想 要表达的意思。之前看书过于贪功,喜欢规定自己在一段时间段内一定要看完某一本书,现 在想想觉得可笑,快速读完但是内化不了的书不看也罢。这是一本我看了很久才看完的书, 但是我现在还是不敢说自己读懂了它,这本薄薄的书中内容太过于丰富,我想我的资质还是 差了一些,天外有天,我还有好远的路要走。
读书札记之 —— 《More Effective C++》
这本书没有《Effective C++》一书重要,但仍然值得一读。这是我看过最多的关于这本书 的评价。这个评价还算中肯,但是这句话面向的是初学者。这本书里面提到的很多技术估计 没有几年的开发经验应该不太可能用到,比如自己处理引用计数,自己设计代理类等等。如 果你是比较高阶(至少你自己是这么认为的)的C++程序员(嗯,或者你可以说自己是工程 师),这本书非常值得一看,因为里面设计的引用技术、字符代理、双分派问题都是近乎神 技,即使用不到这些技术,你依旧可以在这些代码中学到很多设计方面的新的思维。
还有很多人说这本书有点过时,这是实话,作者在书中提到模板、异常可能不受支持的问题 现在看来像是在开玩笑。但是作者写这本书的时候确实有这个问题,而且这些论断并不会影 响文中其他内容的讨论,所以认为这本书太老而不值得一读的人完全可以消除这个顾虑。唯 一的例外是关于异常规格(exception specification)的讨论确实有点过时,因为新的标 准中已经废弃的这一功能,但是阅读相关的内容会让你更容易理解为什么它会遭到废弃。
细数《深度探索C++对象模型》一书中的20个翻译错误
《深度探索C++对象模型》一书由侯捷先生翻译,侯先生是非常有名的C++专著译/作者,这 本书可以看得出来他也花了不少心思翻译。但是我在阅读的过程中还是发现了一些翻译上的 不足。我在下笔写这篇文章的时候纠结到底是用瑕疵一词还是错误一词呢?我最终还是选择 了错误一词,因为有些地方确实有误导之嫌疑,我对照英文原文和中文译本,把我认为可能 是翻译错误的地方整理在此文中。这些地方有可能是我误解了作者的意思而侯捷理解正确了 ,也有可能是我本身误解了侯捷的翻译,我把原文和译文一并贴出,读者可以自行对照判断 。
此文中的页码和行号都是简体译本中的页码和行号,行号中的 - 表示倒数,行号不包括 代码内容,行号前面的码表示是代码的错误
C++中构造函数和虚拟函数的微妙关系
构造函数和虚拟函数之间存在许多比较微妙的关系,比如构造函数不能是虚拟函数,构造函 数不能正常调用虚拟函数等等,本文将会讨论产生这些问题的原因。
读书札记之 —— 《深度探索 C++ 对象模型》
这本书应该有一个副标题——隐藏在编译器背后的故事。这是一本非常有深度的书,它告诉我 们编译器在实现C++的那些特性(封装,单继承,多继承,虚拟继承、虚函数,构造,拷贝 ,析构,模板,内联,异常,RTTI等等)时帮我们做了什么。
译者侯捷在译序中说的本立道生可谓是一语中的。不了解这些东西你可以写出正确的C++程 序,因为你知道C++语法。但是如果你知道C++中的特性是如何实现的,它们的开销是什么, 你就可以在单继承、多继承、虚拟继承之间;抽象类、实体类之间;继承和组合之间做出最 合适你自己的选择。同时了解这些知识会让你对于自己写的程序理解的非常透侧,一个优秀 的程序员要对自己写下的代码了如指掌。
深入探索C++对象模型一书中拷贝构造函数和NRV关系探讨
最近深入探索C++对象模型一书,对于P67中最后一段话的第一句非常不解
这个程序的第一个版本不能实施 NRV 优化,因为 test class 缺少一个
copy constructor
从这段文字来看如果没有拷贝构造函数就不会有 NRV 优化,这一点让人颇为不解,因为从 P66 页中给出的例子来看,NRV 通过额外的引用型参数优化掉了参数的返回,根本没有拷贝 构造函数的调用,这个代码和作者自己的论述看上去是自相矛盾的。
对于这个问题,我在三更_雨
的博文第二章构造函数语义学–关于NRV优化和copy
constructor,找到一些相关的答案,调整了文章行文顺序,放在此处做一个记录。
读书札记之 —— 《UML 精粹》
读这本书主要有两个原因,第一是前阵子看《设计模式》一书的时候对于它的OMT
表示方
法比较感兴趣;第二则是论文需要画一些图,想要画的规范一些。对于《UML 精粹》这本书
早有耳闻,因为这本书不是号称权威的“三剑客”写的书,但是销量比他们的书都要好,而且
这本书非常的薄,比较适合阅读。
读书札记之 —— 《设计模式》
刚开始接触面向对象编程的时候觉得封装是它最大的优点,毕竟相对于面向过程编程来 说,数据和操作数据的行为封装在一起给人耳目一新的感觉。随着编程经验和阅历的增长, 我开始觉得继承和多态才是面向对象最大的优势,运行时绑定的魔力太过于惊人。后来 我去看了设计模式,我又觉得组合才是面向对象编程的精髓之所在,面向接口而不面向 实现编程才是复用的王道。我知道有一天当我功力渐长之后,回过头来想这个问题的时候我 还会有新的看法,我也期待那一天快点到来。