sairate c34823a3bd docs(book): 添加现代 C++教程及相关代码
- 新增现代 C++ 教程的 Preface 章节,包括英文和中文版本
- 添加 C++ Primer 练习代码
- 新增 Learn C++ 教程的 C++ 开发简介章节
- 添加头文件解析文档
- 更新 mkdocs.yml,包含新教程的目录结构
- 修改项目设置,使用 Python 3.10环境
2025-07-06 14:46:58 +08:00

109 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
sort: 3
---
# Effective Modern C++ 笔记
![book](../images/Effective-Modern-C++.jpg)
## 目录
### 第一章 型别推导
[条款1理解模板型别推导](./item1.md)
[条款2理解auto型别推导](./item2.md)
[条款3理解decltype](./item3.md)
[条款4掌握查看型别推导结果的方法](./item4.md)
### 第二章 auto
[条款5优先选用auto而非显式型别声明](./item5.md)
[条款6当auto推导的型别不符合要求时使用带显式型别的初始化物习惯用法](./item6.md)
### 第三章 转向现代C++
[条款7在创建对象时注意区分()和{}](./item7.md)
[条款8优先选用nullptr,而非0或NULL](./item8.md)
[条款9优先选用别名声明而非typedef](./item9.md)
[条款10优先选用限定作用域的枚举型别而非不限作用域的枚举型别](./item10.md)
[条款11优先选用删除函数而非private未定义函数](./item11.md)
[条款12为意在改写的函数添加override声明](./item12.md)
[条款13优先选用const_iterator,而非iterator](./item13.md)
[条款14只要函数不会发射异常就为其加上noexcept声明](./item14.md)
[条款15只要有可能使用constexpr就使用它](./item15.md)
[条款16保证const成员函数的线程安全性](./item16.md)
[条款17理解特种成员函数的生成机制](./item17.md)
### 第四章 智能指针
[条款18使用std::unique_ptr管理具备专属所有权的资源](./item18.md)
[条款19使用std::shared_ptr管理具备共享所有权的资源](./item19.md)
[条款20对于类似std::shared_ptr但有可能空悬的指针使用std::weak_ptr](./item20.md)
[条款21优先选用std::make_unique和std::make_shared而非直接使用new](./item21.md)
[条款22使用Pimpl习惯用法时将特殊成员函数的定义放在实现文件中](./item22.md)
### 第五章 右值引用、移动语义和完美转发
[条款23理解std::move和std::forward](./item23.md)
[条款24区分万能引用和右值引用](./item24.md)
[条款25针对右值引用实施std::move针对万能引用实施std::forward](./item25.md)
[条款26避免依万能引用型别进行重载](./item26.md)
[条款27熟悉依万能引用型别进行重载的替代方案](./item27.md)
[条款28理解引用折叠](./item28.md)
[条款29假定移动操作不存在、成本高、未使用](./item29.md)
[条款30熟悉完美转发的失败情形](./item30.md)
### 第六章 lambda表达式
[条款31避免默认捕获模式](./item31.md)
[条款32使用初始化捕获将对象移入闭包](./item32.md)
[条款33对auto&&型别的形参使用decltype以std::forward之](./item33.md)
[条款34优先选用lambda式而非std::bind](./item34.md)
### 第七章 并发API
[35优先选用基于任务而非基于线程的程序设计](./item35.md)
[36如果异步是必要的则指定std::lauch::async](./item36.md)
[37使std::thread型别对象在所有路径皆不可联结](./item37.md)
[38对变化多端的线程句柄析构函数行为保持关注](./item38.md)
[39考虑针对一次性事件通信使用以void为模板性别实参的期值](./item39.md)
[40对并发使用std::atomic对特种内存使用volatile](./item40.md)
### 第8章 微调
[41针对可复制的形参在移动成本低并且一定会被复制的前提下考虑将其按值传递](./item41.md)
[42考虑置入而非插入](./item42.md)