多态、虚函数与统一接口
理解“同一个接口,不同对象执行不同版本”,为可扩展的程序结构打基础。
- 核心知识
virtual、override、抽象类、纯虚函数、虚析构。 - 课堂案例角色技能调度器:战士、法师和弓箭手执行各自技能。
- 算法训练遍历对象容器,根据运行时类型调用统一接口。
- 课后作业新增治疗者和防御者,并通过父类指针统一管理。
Learning goal
这 15 节课采用“讲一个概念、写一个例子、解决一个问题、完成一份作业”的方式。每一阶段都会产出一个能运行的小程序,学生既要写出正确代码,也要学会拆分任务、验证输入、定位错误和解释算法。
Phase 01 · Object-oriented to CLI
理解“同一个接口,不同对象执行不同版本”,为可扩展的程序结构打基础。
virtual、override、抽象类、纯虚函数、虚析构。把封装、继承、多态、组合和智能指针放进一个完整的小型项目。
学会让程序与用户对话,并正确处理空输入、错误数字和退出命令。
cin、cout、getline、输入流状态、argc/argv。Phase 02 · Program logic
把复杂规则写成清晰分支,避免多层判断互相打架。
if/else、switch、逻辑运算、enum class。使用循环处理重复任务,学会累计、计数、寻找最大值和提前结束。
for、while、嵌套循环、break/continue。把长程序拆成可命名、可测试、可复用的小步骤。
const 引用、函数重载。Phase 03 · STL and algorithms
掌握命令行程序最常见的数据类型:一整行用户文本。
string、find、substr、字符判断、stringstream。用连续容器保存一组数据,完成增加、删除、修改和遍历。
array、vector、范围循环、迭代器、二维容器。理解算法不仅要“得到答案”,还要考虑数据变大后是否仍然高效。
sort、比较器、线性查找、二分查找、lower_bound。O(n)、O(n²) 和 O(log n)。Phase 04 · Data structures
通过“后进先出”和“先进先出”理解数据顺序怎样影响程序行为。
stack、queue、deque 及其常用操作。用键快速查找数据,用集合自动去重,理解有序与哈希容器的区别。
set、map、unordered_set、unordered_map。看懂节点如何连接,比较链表与 vector 在访问和插入方面的差异。
next 指针、list、插入、删除和遍历。Phase 05 · Problem solving and capstone
学习函数怎样调用自己,以及如何在尝试失败后退回上一步。
让命令行程序关闭后仍能保留数据,并学会处理文件不存在或格式错误。
ifstream、ofstream、CSV、异常、错误信息和断言。独立完成需求分析、类设计、算法选择、数据保存、测试和演示。
Graduation checklist
能从需求写出菜单、函数和类,完成一个 300-600 行左右的多文件命令行程序。
能实现并解释计数、最大最小值、线性查找、二分查找、排序、递归和简单回溯。
理解数组、vector、栈、队列、集合、映射和链表的特点,并能根据问题做出选择。
会验证输入、处理文件错误、设计边界测试,并利用编译信息和调试输出定位问题。
能画出简单类图,说明使用了哪些算法和容器,并通过示例数据演示程序功能。
具备进入竞赛算法、游戏开发、系统编程或更大型 C++ 项目的基础阅读和实践能力。