高效现代C++
352 页
Chinese
PDF
4.5

高效现代C++

高效现代C++

作者:

年份:

简介:

引言

斯科特·迈耶斯所著的《高效现代C++》(英文原名Effective Modern C++)并非又一本普通的语言指南。它是C++多年演进过程中积累的实践经验的精华。该书于2014年出版,已成为成千上万从过时的C++98/03标准转向现代C++11和C++14的开发者的案头必备。迈耶斯以其“Effective C++”系列闻名,此次他聚焦于那些从根本上改变了代码编写方式的语言新特性。

本书包含42条具体建议(Item),每条专注于一个重要主题:从正确使用auto和Lambda表达式,到移动语义的细节以及智能指针的使用。它并非面向初学者的教程,而更像是一本为希望用现代C++编写高效、安全且可维护代码的经验丰富的程序员准备的指南。

本书内容

本书的核心思想是展示如何正确使用C++11/14的新特性,同时避免常见陷阱。迈耶斯不仅仅列举语法结构,而是解释为什么某些解决方案优于其他方案。本书涵盖以下关键领域:

  • 类型推导:详细分析auto和decltype的机制及其在不同上下文中的行为。
  • 智能指针:std::unique_ptr、std::shared_ptr、std::weak_ptr——何时以及如何使用,如何避免循环引用。
  • 移动语义与完美转发:右值引用、std::move、std::forward,以及使用时的典型错误。
  • Lambda表达式:语法、变量捕获、泛型Lambda、与std::bind的比较。
  • 并行与并发:std::thread、std::async、任务和期值的基础知识。
  • 模板与泛型编程:可变参数模板、返回类型中的auto、constexpr。

适合读者

本书面向已有C++使用经验(至少达到C++98/03水平)并希望掌握现代标准的程序员。它将有助于:

  • 从C++98过渡到C++11/14的开发者。
  • 希望深入理解移动语义和智能指针的工程师。
  • 编写高负载系统并追求极致性能的人。
  • 研究现代C++方法的教师和高年级学生。

读者将学到什么

阅读本书后,读者将能够:

  • 自信地使用auto和decltype进行类型推导,理解所有细微差别。
  • 在智能指针和原始指针之间做出正确选择,避免内存泄漏。
  • 应用移动语义优化性能,避免悬垂引用错误。
  • 编写高效的Lambda表达式,理解捕获机制和生命周期。
  • 使用std::async和std::future处理异步任务,避免死锁。
  • 理解何时constexpr真正带来优势,何时则不然。
  • 避免使用过时的构造(例如,用Lambda代替std::bind)。

本书优势

本书最大的优点是其实用性。每条建议都附有代码示例,既展示正确用法也展示错误用法。迈耶斯非常关注“陷阱”:例如,为什么auto可能推导出非预期的类型,或者移动语义为何对某些类型无效。

另一个优点是清晰的结构。本书按主题分章,每条Item都可以独立阅读。

推荐