从我看到的 这篇文章我决定开始阅读的书 有效的 C + + 。
但是现在因为 C + + 11有了很多新特性,一些好的实践也发生了变化,我不确定这是否是一个好主意。C + + 11的出现是否推翻了包含在有效 C + + 中的任何建议?如果是,我应该避免哪些话题?
是的,绝对值得一读。有一个 斯科特正在写的新书: 《有效的 C + + 11》,专注于 C + + 11代码。有效的 C + + 仍然是非常相关的,并没有被新书所取代。购买,阅读,享受:)
第一,这本书当然仍然适用于 C + + 03。
第二,Meyers 正在写或者已经写了,这取决于你什么时候读这个句子,有效的 C + + 11。
第三,概括地说,这本书的观点仍然是有效的。C + + 仍然偏爱速度而不是安全,有效的 C + + 中的许多问题都围绕着这一点。
只有类型的点我希望是无效的是那些说“不要这样做,做这个代替。”“不要这样做”仍然有效。但是 C + + 已经解决了一些问题。特别是,任何关于使用升级的建议都可能不被支持,因为 C + + 11包含了许多 Meyers 特别推荐读者使用升级的特性。
这就是斯科特 · 迈耶斯本人对此的看法
这可能会导致你怀疑 这个前 C + + 0 x 版本的有效 C + + 仍然相关。我很高兴 事实上,令人惊讶的是 沉浸在 C + + 0x 的细节中已经两年了,我还以为会有点抱怨 当我以 C + + 0x 的思维审阅这本书的目录的时候。当然 有些东西是不合适的,但我找到的建议证明了这一点 如果 C + + 0x 开发人员更喜欢 const、枚举和内联,而不是 他们应该。他们应该防止异常从 留下析构函数(第8项) ? 当然。他们是否应该使用对象 管理资源? 将数据成员声明为私有? 考虑替代方案 因子参数无关的代码 模板? (项目13,22,35和44。)是的,是的,是的,是的! 我的目标有 总是为了有效的 C + + 的目录来总结 书中的建议,这个总结仍然同样适用于 C + + 0x 开发相对于“传统的”C + + 开发而言 更大的语言,在某些方面它是一个不同的,但核心 有效利用“旧的”C + + 的技术是 C + + 0x 的有效使用。 这并不意味着这个高效的 C + + 是一个完美的匹配 这本书没有讨论 C + + 0x 的新特性,所以关于 缺少对这些特性的有效利用 有效的 C + + 当然会有专门用于移动操作的项目, 到统一的初始化,以及 lambda 表达式,它可能会有一整章关于如何有效地使用并发 API。这样一本书也会包含不同的例子,例如,使用自动变量的例子,基于范围的 for 循环,类内默认初始化器,以及偶尔的可变参数模板。在某种程度上,这本书在支持 C + + 0x 方面做得不够好,错误在于遗漏,而不是委托。
这可能会导致你怀疑 这个前 C + + 0 x 版本的有效 C + + 仍然相关。我很高兴 事实上,令人惊讶的是 沉浸在 C + + 0x 的细节中已经两年了,我还以为会有点抱怨 当我以 C + + 0x 的思维审阅这本书的目录的时候。当然 有些东西是不合适的,但我找到的建议证明了这一点 如果 C + + 0x 开发人员更喜欢 const、枚举和内联,而不是 他们应该。他们应该防止异常从 留下析构函数(第8项) ? 当然。他们是否应该使用对象 管理资源? 将数据成员声明为私有? 考虑替代方案 因子参数无关的代码 模板? (项目13,22,35和44。)是的,是的,是的,是的! 我的目标有 总是为了有效的 C + + 的目录来总结 书中的建议,这个总结仍然同样适用于 C + + 0x 开发相对于“传统的”C + + 开发而言 更大的语言,在某些方面它是一个不同的,但核心 有效利用“旧的”C + + 的技术是 C + + 0x 的有效使用。
这并不意味着这个高效的 C + + 是一个完美的匹配 这本书没有讨论 C + + 0x 的新特性,所以关于 缺少对这些特性的有效利用 有效的 C + + 当然会有专门用于移动操作的项目, 到统一的初始化,以及 lambda 表达式,它可能会有一整章关于如何有效地使用并发 API。这样一本书也会包含不同的例子,例如,使用自动变量的例子,基于范围的 for 循环,类内默认初始化器,以及偶尔的可变参数模板。在某种程度上,这本书在支持 C + + 0x 方面做得不够好,错误在于遗漏,而不是委托。
更新 : 新标题 高效的现代 C + + 从2014年11月开始出售,来自 < strong > O’Reilly 和 亚马逊(以及其他许多你可以谷歌的标题)。