Day 1

开训 + C++ 回顾/工具链

C++/Qt 方向实训 · 第 1 / 5 天 · 对齐官方方案书 Day1

  • 模块 A(3 课时):团队建设 / 敏捷 Scrum / C++ 在企业中的应用(讨论型,无编码)
  • 模块 B(3 课时):C++ 环境搭建 / 高级程序回顾 / CMake / Vcpkg(压缩讲解)

本教案假定学员已掌握 C++ 基础语法与 OOP 概念——方案书对今天下午的 官方定位是"回顾和提升",不是零基础教学。今天开始的 5 天覆盖方案书 C++方向 Day1–5 全部课堂内容,Day6–10 是纯项目实作。

模块 B 开始前:10 分钟摸底测验

这条假设不是拍脑袋定的——建议模块 B 讲授前先用 docs/teaching/PRETEST.md (10 题、10 分钟)实测一次,按结果决定原节奏推进还是回退到语法讲解。

模块 A · 讲授 35min

团队建设 / 敏捷 Scrum / C++ 企业应用

  • 团队建设与文化、实训安排与考评要求
  • 项目开发过程管理全景(JIRA / Git / OASIS / Wiki)
  • 敏捷 Scrum 项目开发管理
  • C++ 在企业中的应用

实习实训服务流程

出处:docs/TRAINING_PLAN_2026.md 「六、实习实训服务流程」——需求分析→需求评审→项目研发/代码实现→阶段评审→ 项目测试/交付,这就是接下来 Day6–10 项目实作要走的完整流程。

质量保证:四平台一标准

出处:docs/TRAINING_PLAN_2026.md 「七、质量保证」——JIRA(任务跟踪)+ Git(版本管理)+ Wiki 知识库 + OASIS 绿洲实训管理平台,是接下来项目实作阶段的四个协作工具。

模块 A · 讨论 95min(分组,非编码)

动手:分组讨论

今天上午没有编码练习——先把协作流程和项目方向定下来,Day6–10 的项目实作会真的用到今天讨论的结论。

任务卡 1 · 协作分工

目标
结合服务流程图,说清楚本组打算怎么分工使用 Jira(任务跟踪)+ Git(代码版本管理)
验收标准
每组提交一句话分工说明(谁负责建 Jira 看板 / 谁负责 Git 仓库初始化),能在图上指出对应环节
基础知识 · 参考
上一节"实习实训服务流程"图 · TRAINING_PLAN_2026.md 「七、质量保证 (一)(二)」

任务卡 2 · 选定项目方向

目标
选定实训期间打算做的项目方向(Linux C 方向,或 C++/Qt 方向的备选商业项目之一)
验收标准
每组报出项目名称 + 一句话说明选择理由
基础知识 · 参考
TRAINING_PLAN_2026.md 「八、备选商业项目介绍」

模块 B · 讲授 35min(巡礼式,压缩讲解)

C++ 回顾 / CMake / Vcpkg

只挑「学过但容易讲不透」的点,不逐章展开——方案书官方定位是 "回顾和提升",深度让位于 Day2–5 的 Qt 内容。

namespace 作用域

"作用域"不是"文件顺序"——很多人误以为 namespace 只是给名字加前缀, 实际上它定义的是一段可以被跨文件延续、跨块合并的作用域。

出处:p01/ch03/namespace_syntax.cpp, 对照 docs/ERRATA.md

函数重载决议

编译器靠"名字改写"(name mangling)把重载函数变成不同的符号;二义性 往往不是代码写错了,而是重载集合里存在两个"一样好"的候选。

出处:p01/ch03/function_overload_mechanism.cpp

引用的本质

把引用理解成"自动解引用的 const 指针"——这个实现视角能解释引用为什么 必须初始化、为什么不能重新绑定。

出处:p01/ch03/reference_essence.cpp

虚析构与内存泄漏


Base* p = new Derived();
delete p;   // 如果 ~Base() 不是 virtual,~Derived() 不会被调用——经典泄漏
    

出处:p01/ch04/s08/virtual_dtor_purpose.cpp

模板与 STL 速览

只点名,不展开:泛型编程(函数模板/类模板)+ 容器/迭代器,是 Day6–10 项目实作里会大量用到的基础设施。

出处:p01/ch05/class_template_basics.cppp01/ch09/s03/vector_iterator.cpp

CMake:用本仓库当教材

cmake -S . -B build -G Ninja -DBUILD_QT_PART=OFF -DCMAKE_BUILD_TYPE=Debug
cmake --build build   # 144 个目标全绿

出处:仓库根 CMakeLists.txt—— option(BUILD_QT_PART) 控制是否编译 Qt 部分,每个示例一个 add_executable 目标,这就是"一文件一目标"约定的由来。

Vcpkg 包管理器(概念,无演示)

C++ 生态的包管理器,解决"第三方库怎么装、怎么被 CMake 找到"的问题。

缺口说明

本仓库用的是"隔离 Qt 手动装"(tools/install_qt_host.sh) 而非 vcpkg,两种思路都要认识;本仓库暂无 vcpkg 可运行示例——安装真实 vcpkg 工具链超出最小示例范畴,此处仅作概念介绍。

模块 B · 练习 95min

动手:走一遍真实构建流程

任务卡 1 · 走一遍真实构建流程

目标
独立完成本仓库 Part1 的配置+构建,不看着教师操作
验收标准
cmake -S . -B build -G Ninja -DBUILD_QT_PART=OFF 配置成功; cmake --build build 144 个目标全绿;能说出 option(BUILD_QT_PART) 的作用
基础知识 · 参考
仓库根 CMakeLists.txt · CMake 官方文档 Tutorial(选读·需联网)

任务卡 2 · 修一个真实的坑

目标
docs/ERRATA.md 挑 2 条记录,理解"wiki 原文错在哪、现在的写法为什么对"
验收标准
能用一句话向同组同学解释清楚,不能只念代码
基础知识 · 参考
docs/ERRATA.md

任务卡 3(选做)· 版本探针

目标
tools/std_probe.py 验证一个标准版本差异点(如三目运算符可否作左值)
验收标准
跑出至少一个"该标准报错、另一个标准不报错"的对比结果,对照 docs/VERSION_NOTES.md §2
基础知识 · 参考
tools/std_probe.py · docs/VERSION_NOTES.md

当日产出验证

验收

cmake --build build --target all   # Part1,144 个目标全绿

每组提交一句话分工说明 + 至少 1 条 ERRATA 坑点讲解。

返回目录 · 下一天 →