有效的C ++仍然有效吗?

时间:2013-07-25 19:10:17

标签: c++ c++11 coding-style effective-c++

从我在this post中看到的情况来看,我决定开始阅读这本书Effective C++

但现在由于C ++ 11而有许多新功能,并且一些好的做法发生了变化,我不确定它是否真的是一个好主意。 C ++ 11的出现是否弃用了Effective C ++中包含的任何建议?如果是这样,我应该避免哪些主题?

3 个答案:

答案 0 :(得分:87)

这就是斯科特迈耶斯自己不得不说的on his own blog

  

这可能会让您怀疑是否有信息和建议   这个有效C ++的前C ++ 0x版本仍然相关。我很高兴   报告它确实如此。事实上,令人惊讶的是。花了差不多   两年沉浸在C ++ 0x的细节中,我预计会呻吟一下   我在阅读本书的目录时考虑到了C ++ 0x。一定   有些项目不合适。但我发现的建议证明了这一点   声音。 C ++ 0x开发人员应该更喜欢consts,enums和inlines   #defines(第2项)?他们应该。他们应该防止例外   离开析构函数(第8项)?当然。他们应该使用对象吗?   管理资源?声明数据成员是私有的吗?考虑替代品   虚拟功能?与因子参数无关的代码   模板? (第13,22,35和44项。)是,是的,是的,是的!我的目标是   总是针对Effective C ++的目录进行总结   书中的建议,该摘要仍然适用于   关于“传统”C ++开发的C ++ 0x开发。 C ++ 0x是一个   更大的语言,在某些方面它是一个不同的语言,但核心   有效使用“旧”C ++的技术是核心   也有效地使用C ++ 0x。

     

这并不意味着这个有效的C ++是完美的匹配   的C ++ 0x。本书不讨论C ++ 0x的新功能,所以关于   缺少有效使用这些功能。 C ++ 0xified   有效的C ++肯定会有专门用于移动操作的项目,   统一初始化和lambda表达式,它可能有一整章关于有效使用并发API。这样的书还将包含不同的示例,例如,使用自动变量,基于范围的for循环,类内默认初始化器以及偶尔的可变参数模板。如果本书不支持C ++ 0x,那么错误就是遗漏,而不是委托。

更新:新标题 Effective Modern C ++ 自2014年11月起由O'ReillyAmazon(以及其他许多人)出售可以google for)。

答案 1 :(得分:44)

是的,绝对值得一读。有一个new book that Scott is working on: Effective C++11,它专注于只有C ++ 11的代码。 Effective C ++ 仍然非常相关,并没有被新书取代。购买,阅读,享受:)

答案 2 :(得分:20)

一,这本书当然对C ++ 03有效。

二,Meyers写作或写作,取决于你何时阅读这句话,Effective C ++ 11。

三,一般而言,本书的要点仍然有效。 C ++仍然倾向于速度超过安全性, Effective C ++ 中的许多问题都围绕着这个问题。

我希望无效的唯一的点是指“不要这样做,而是这样做”。 “不要这样做”仍然有效。但是C ++将解决一些问题。特别是,任何使用boost的建议都可能被弃用,因为C ++ 11已经包含了Meyers特别将读者引用为Boost的许多功能。