有效的C ++仍然有效?
从我在这篇文章中看到的,我决定开始阅读有效的C ++的书。
但是现在由于C ++ 11有许多新function,并且有一些好的做法改变了,所以我不确定这是否是一个好主意。 C ++ 11的出现是否反对Effective C ++中包含的任何build议? 如果是的话,我应该避免哪些话题?
这是斯科特·迈耶斯(Scott Meyers)自己在自己的博客上所说的
这可能会导致您怀疑有效C ++的这个C ++ 0x版本中的信息和build议是否仍然相关。 我很高兴地报告说,它确实如此。 事实上令人惊讶的是。 在C ++ 0x的细节上花费了近两年的时间,我期待在C ++ 0x回顾本书的目录时呻吟一下。 当然有些项目是不合适的。 但是我发现的build议很好。 C ++ 0x开发人员是否应该使用const,enums和inline来定义
#defines
(Item 2)? 他们应该。 他们是否应该防止exception离开析构函数(第8条)? 当然。 他们应该使用对象来pipe理资源吗? 声明数据成员是私人的? 考虑替代虚拟function? 因子参数无关的代码模板? (第13,22,35和44项)是的,是的,是的! 我的目标始终是有效的C ++的目录来总结书中的build议,这个总结仍然适用于C ++ 0x开发和“传统”C ++开发。 C ++ 0x是一种更大的语言,在某些方面它是一个不同的语言,但是有效使用“旧”C ++的核心技术也是有效使用C ++ 0x的核心。这并不意味着这个有效的C ++是C ++ 0x的完美匹配。 本书不讨论C ++ 0x的新function,所以关于如何有效使用这些function的项目是不存在的。 C ++ 0xified有效的C ++肯定会有物品专门用于移动操作,统一初始化和lambdaexpression式,而且它可能会有整个章节有效地使用并发API。 这样一本书也将包含不同的例子,例如,使用自动variables,基于范围的循环,类内默认初始化,以及偶尔variadic模板。 在本书对C ++ 0x的支持方面有所欠缺,这些错误是遗漏的,而不是委托的。
更新 :自2014年11月起, O'Reilly和Amazon (以及其他许多可以谷歌search到)的新标题Effective Modern C ++已经发售。
是的,绝对值得一读。 Scott正在研究一本新书: 有效的C ++ 11 ,它专注于仅用于C ++ 11的代码。 有效的C ++仍然非常相关,不会被新书取代。 买它,读它,享受:)
其一,本书当然对C ++ 03有效。
二,迈耶斯正在写或写,取决于你什么时候在读这个句子,有效的C ++ 11。
三,总的来说,本书的要点仍然有效。 C ++仍然支持速度而不是安全性, Effective C ++中的许多问题都围绕着这个问题。
我认为唯一无效的观点是那些说“不要这样做,而是做这个”的观点。 “不要这样做”仍然是有效的。 但是C ++将解决一些问题。 特别是,任何使用boost的build议都可能被弃用,因为C ++ 11已经包含了Meyers特别提到读者的许多function。