现代C++速成:C++11/14/17/20精华指南

需积分: 3 18 下载量 36 浏览量 更新于2024-07-06 收藏 2.41MB PDF 举报
"现代 C++ 教程:高速上手 C++11/14/17/20(2021 年 3 月 15 日) - 欧长坤著,采用CC BY-NC-SA 4.0许可协议" 本教程旨在帮助读者快速掌握现代C++编程,特别关注C++11、C++14、C++17和C++20新引入的特性。作者欧长坤强调了这一版教程的内容可能已过期,建议访问相关网站和GitHub仓库获取最新资料。 教程主要分为多个章节,涵盖了C++语言的重要升级和改进: 1. **迈向现代C++**: - 弃用的特性:介绍了一些在新标准中不再推荐使用的旧特性。 - C的兼容性:讨论了C++与C语言之间的联系和差异。 2. **语言可用性的强化**: - 常量与`nullptr`:介绍了新的空指针常量`nullptr`,以及`constexpr`关键字,用于指定可以在编译时计算的函数或变量。 - 变量初始化:包括在`if`和`switch`语句中声明变量、初始化列表以及结构化绑定等新特性。 - 类型推导:讲解了`auto`和`decltype`如何简化类型推断,以及尾返回类型推导和`decltype(auto)`的应用。 - 控制流:包含`ifconstexpr`(静态断言)和区间`for`循环的改进。 - 模板:涉及外部模板、尖括号语法、类型别名模板、默认模板参数、变长参数模板、折叠表达式和非类型模板参数推导。 3. **语言运行期的强化**: - Lambda表达式:详细介绍了lambda表达式的使用,包括基础用法和泛型Lambda。 - 函数对象包装器:讲解了`std::function`和`std::bind`以及占位符`std::placeholder`的应用。 - 右值引用:解释了左值、右值、纯右值、将亡值的概念,并讨论了右值引用如何支持移动语义。 - 完美转发:阐述了如何有效地传递参数,以保持其原始性质。 4. **容器**: - 线性容器:包括`std::array`的使用,以及与`std::forward_list`相关的概念。 - 无序容器:这部分可能会涵盖如`std::unordered_map`和`std::unordered_set`等无序容器的使用。 每一章末尾都提供了习题,帮助读者巩固所学知识。教程的目的是让读者能够充分利用C++的新特性,提升编程效率和代码质量。通过学习,读者将能更好地理解和应用现代C++,以适应不断发展的编程环境。