从我在this post中看到的情况来看,我决定开始阅读这本书Effective C++。
但现在由于C ++ 11而有许多新功能,并且一些好的做法发生了变化,我不确定它是否真的是一个好主意。 C ++ 11的出现是否弃用了Effective C ++中包含的任何建议?如果是这样,我应该避免哪些主题?
答案 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'Reilly和Amazon(以及其他许多人)出售可以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的许多功能。