Effective C++(第三版)

如果C是一个能绞死自己的绳索,那么C++就是个五金店,里面还挤满了许多自告奋勇帮你绑绳结的人。

其实我是一个不怎么了解编程语言的人,至少在两三年前我唯二会的语言是haskell和C,但是现在我已经忘记了这两种语言,转而投向了python和C++。我无意去挑起一场争论什么编程语言好的战争,但是作为一个随波主流的人,python和C++带给我的便利是要超过原来的haskell和C的。

曾经跟大神们讨论过什么才算是C++,而不是"C with STL"甚至是“C with cout”。那么在这本书的第一章的第一个条款就回答了这个问题,C++其实是一个语言联邦:类C的部分,OOP C++, Template C++,STL C++。

类C部分没有什么好说的,C这个语言因为他本身支持的“功能”比较少,所以没有很多需要去学的地方。基本上所有的操作就是那个样子,鲜有例外也少有百思不得其解之处。

那么对于我这种写过几百行C++代码,一瓶子不满半瓶子晃荡的人来说,C++最令人费解的便是他的OOP部分。可能确实是因为写的代码太少,就算是那些constructor,destructor,copy,assignment啥的就够让我头大了。就单单一个constructor,就有赋值,有构造,如果不系统的去学习,几乎是无法预期他的行为的。要是再加上继承,这里有个virtual那里有个override的作用域,还得时不时的来个default parameter的绑定时间和调用时间,那么我的程序便只能是弥散着无限的bugs了。而这本书,就详尽的讲了上述几乎是所有的坑,这让我甚至怀疑这本书的作者究竟经历过什么。。。其实我一直觉得有个悖论,因为天才可能不会觉得我上面提出的问题是问题,他们可能觉得这就跟1+1=2一样稀疏平常,然而对于一般人,究竟是要犯多少错误才能总结出这么全面的经验。好吧。。。真相是他们(比如这本书的作者)好像在一个委员会里,这个委员会专门研究C++,包括观察像我这样的C++程序员,然后出一些指导或者为了我这样的程序员改进C++。。。

Template C++不算是难,固然写出第一个template的class或者是template的function很难,但是只要学会了,那么他其中的规则还是很简单的。这本书只用了一个章节去讲什么template编程,除了在有隐式构造函数的时候需要稍微注意下之外,确实是没有什么需要特别注意得了。

而C++ with STL,这本书的作者好像有一本单独的书讲,为了卖钱,这本书其实没怎么涉及。。。

综上所述呢,这本书就是介绍了C++所有的“坑”,并且告诉你怎么去避免。想想波音737 MAX8的那个解释飞机会自己往下俯冲到底的说明书,对对,就是类似的东西。如果你不想在空中绝望得和飞机进行搏斗每个夜晚和C++艰难的搏斗,那么我十分建议去读一下这本书。

下期预告:还没想还嘿。

Last updated