Modern C++ Primer
本项目是一个以认知阶段为主线的现代 C++ 教程,为此有三个主要目标:
- 内容准确,尽量避免歧义
- 由于标准的写法并不一定方便理解,某个概念第一次出现时,为了方便理解,可能会缩小概念范围、或者将统一的概念分解为多个小概念。但是,这些引入的概念都应当做到正确。
- 跟随 C++ 标准
- 在需要时,也对特定平台环境进行说明
- 内容由浅入深,减少学习负担
- 避免超过1章的提前引用,任何概念必须在本章中得到解释
graph LR X001(基本环境搭建) --> X002(控制台编译指令) --> T01(std::print Hello, World!) X003(标识符与关键字) --> T02(简单函数) X004(简单声明) --> T02 X005(语句与表达式) --> T02 T01 --> T02 T02 --> F001(深入main函数)
subgraph 流程控制 X006(if<br/>switch) X007(for) X008(while<br/>do-while) end X009(作用域与生命期)-->深入函数2 X003-->流程控制 流程控制 --> 深入函数1 T02 --> 深入函数1
subgraph 深入函数1 简单函数重载 --> 默认参数 --> 运算符重载 end
subgraph 深入函数2 递归函数 --> 函数指针 --> 函数对象 end
subgraph 深入函数3 内联函数 --> 函数模板 --> 复杂函数重载 end
深入函数1 --> 深入函数2 深入函数2 --> 深入函数3
subgraph 简单类型 X010(算术类型)-->X011(初步类类型) X010-->X012(枚举类型) X010-->X013(联合类型) end
subgraph 衍生类型 X014(指针类型) X015(简单引用类型) X016(数组类型) end
简单类型-->衍生类型
衍生类型-->深入类类型
X009 --> 值类别
X011-->深入类类型 subgraph 深入类类型 T0204(访问限制) --> T0206(数据成员) --> T0205(函数成员) T0205-->T0207(特种成员函数) T0205-->T0208(友元类和友元函数) T0204-->T0208
成员运算符
T0209(继承) --> T0210(派生类) --> T0211(虚函数) --> T0212(动态类型转换) T0205-->T0211
subgraph 复制与移动 X019(左值引用)-->复制构造函数-->复制赋值运算符 X020(右值引用)-->移动构造函数-->移动赋值运算符 end
T0207-->复制与移动 end
衍生类型-->T0202(类型转换)
值类别-->复制与移动
深入函数1 --> 成员运算符 T0202-->T0212
衍生类型-->T0304(类型提取)