0. OOP 期末考试地图¶
一句话定位:这门课考的不是"背概念",而是看一段 C++ 代码能不能在脑子里跑出正确输出。 所以复习主线只有一条:把每一个语言机制,都变成"我能预测这段代码打印什么"。
考试信息(来自辅学 + 历年卷):
时间:2026-06-29 10:30-12:30(120 分钟)
地点:紫金港机房(机考)
命题:全英文(不认识的单词可以当场问监考老师)
形式:客观题(判断 / 单选 / 看程序写结果 / 程序填空)+ 编程题
判分:编程题无在线评测,可以用 Markdown 书写,人工批阅
0.1 题型分布(按"该花多少时间"排序)¶
| 题型 | 英文叫法 | 占分 | 难度 | 复习优先级 |
|---|---|---|---|---|
| 看程序写结果 | Write the output | 全卷最大头(30%~50%) | ★★★ | 🔴 第一优先 |
| 编程题 / 设计题 | Program Design | 35%~40% | ★★★★★ | 🔴 第一优先 |
| 程序填空 | Fill in the blank | 20%+ | ★★★★ | 🟠 第二 |
| 判断题 | True / False | ~10% | ★★★ | 🟡 第三 |
| 单选题 | Multiple choice | ~10% | ★★★ | 🟡 第三 |
记住一个事实:"看程序写结果" + "编程题" 加起来通常超过 80 分。这两块练熟,及格稳了,冲高分也靠它。
0.2 高频考点排名(出现次数越多越要背)¶
下面这张表是从 6 份真题横向统计出来的,从上到下就是你的背诵顺序:
第 1 名 构造 / 析构的调用顺序 ← 几乎每张卷都考,必拿分
第 2 名 虚函数与动态绑定 ← 基类指针调用,输出谁的版本?
第 3 名 拷贝构造 / operator= 调用计数 ← 按值传参、a3 = a1 触发几次拷贝?
第 4 名 运算符重载(++ 前置/后置等) ← 计数循环输出几个星号?
第 5 名 static 成员(变量 / 函数)
第 6 名 dynamic_cast vs static_cast
第 7 名 异常处理 + 栈展开析构计数
第 8 名 模板与全特化
第 9 名 引用返回的副作用 f(m)++ 改原值
第 10名 friend / this / 命名空间 / 重载解析
0.3 这套讲义怎么用¶
我把所有内容拆成了 6 章 + 1 章必背题,每章都是"从零讲清楚 → 能预测输出":
| 文件 | 内容 | 对应高频考点 |
|---|---|---|
| C++ 基础 | C++ 基础:I/O、引用、函数、lambda、const、static、类型系统 | 第 5、9、10 名 |
| 类与对象 | 类与对象、封装、构造析构、new/delete、深浅拷贝、this | 第 1、3 名 |
| 继承与多态 | 继承、多态、运算符重载、虚函数、vtable、抽象类、类型转换 | 第 1、2、4、6 名 |
| 移动语义与异常 | 左值右值、移动语义、异常处理、断言 | 第 7 名 |
| 模板与 STL | 模板、特化、迭代器、STL 容器、智能指针 | 第 8 名 |
| 考试经典题 | 13 道必背经典题 + 判断题答案串 + 编程题骨架 | 全部 |
最高性价比路线(如果时间很紧):
1) 先读 02 章和 03 章(构造析构 + 虚函数),这是占分最多的部分
2) 直接刷 06 章的 13 道经典题,把输出规律背熟
3) 回头补 01、04、05 章填知识缝
4) 考前把 06 章的判断题答案串和编程题骨架过一遍
0.4 编程题的通用得分要点(先记住,05、06 章会反复用)¶
不管题目让你写什么类,下面 5 条几乎是"白送的分",每条都要做到:
① 基类析构函数加 virtual: virtual ~Base() {}
(否则 delete 基类指针时派生类部分不析构 → 内存泄漏)
② 管理了堆内存就写"三件套":拷贝构造 + 拷贝赋值 + 析构(Rule of Three)
③ 接口用纯虚函数声明: virtual void area() = 0;
④ 派生类构造用初始化列表调基类: Derived(...) : Base(...) {}
⑤ 重写虚函数时签名要完全一致(包括 const),加 override 让编译器帮你查
下一章 → C++ 基础