跳转到内容

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(类型提取)