跳转至

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++ 基础