Modern C++ Overview综览

发布时间 2023-10-22 17:25:13作者: jigsawecho
## Part I:Language(第一篇:语言)

- 大局观——简直像个新语言

给出一个完整实例,展示(几乎)所有新特性的样貌,让学员从真实代码中一次性窥得(几乎)全豹,得知即将面对的新知和挑战。

- auto, type deduction

型别/型态 推导是Modern C++至关重要的某种基础;这一节为后头诸多特性打好基础。

- std::initializer_list, Uniform Initialization(一致性初始化)

标准库的所有容器都已新添一个以std::initializer_list为形参的构造函数,用以应付数量不定的实参。这东西对我们的应用代码也很有用。

- Ranged-Based for loop

根据调查最受欢迎的新特性。简单易学;其实只是个语法糖衣。

- Lambdas

大幅改变Modern C++应用代码的风貌。长相奇特,规则也奇特,但是经过仔细推敲就能消除所有学习障碍。

- Move Semantics and Rvalue References, (移动语意与右值引用)

Modern C++最重要的基础特性之一,影响范围几乎涵盖所有层面的代码。

- Perfect Forwarding and Universal Reference, (完美转发与万能引用)

带有名称的右值其实是个左值” 这一看似魔幻的说法和事实造成参数在转发过程中出现不完美。Modern C++为此提出解决之道。

- 如何编写 move-aware classes;关于特殊成员函数

「具备移动意识」的 classes 是 Modern C++ 得以提升效能的重要因素。标准库供应的 classes 都已有了这种意识,user-defined classes 该怎么写才能融入大家庭?它们该提供哪些特殊成员函数?

- Variadic Templates(变参模板)

少数几项绝对无法以C++98绕弯替换的语言构件之一。用来解决”任意数量任意型别之实参” 难题。可借以实现令人瞠目结舌的递归复合和递归继承,而后者正是 std::tuple 赖以实现的技术。

- =default, =delete, final, override, noexcept, decltype,…

## Part II: Standard Library (第二篇:标准库)

- std ::tuple:可将任意数量任意型别的东西组成一个“个体”
- std ::move, std ::forward, std ::ref:三个常见且重要但不易理解的标准库零组件
- std ::any, std::function:ModernC++力推的一种关于“任意” 的概念和作法
- Type Traits:让我们得以根据object的型别而非内容进行编程
- Unordered Containers:一套以散列表hash table为核心的新式标准容器
- std::hash:彻底理解hash函数的形式和作为
- boost::hash_val():一个够好的万用型hash 函数,由BOOST提供
- 智能指针 (Smart Pointers):unique_ptr、shared_ptr和weak_ptr,彻底理解其背后结构
- 线程库(thread library)简介:线程库提供了什么?与多线程 APIs 的关系

## Part III: C++ 20 之崭新成分

- Concepts, Modules, Coroutines:简介这些崭新部件的样貌及其背后思维