把数据和操作打包在一起,用"对象"的方式思考程序。本章从最基础的 class 定义出发,逐步带你理解封装、继承与多态。
想象一下,你要写一个程序来管理一个班级里所有学生的信息。最开始你会定义一堆变量:name1、score1、name2、score2……然后再写一堆函数来操作这些数据。很快你就会发现,数据和函数到处都是,找起来头疼,改起来更头疼。
面向对象的核心思想就是:把属于同一个"东西"的数据和操作,打包在一起。 一个学生的名字、分数,以及"打印信息"、"修改分数"这些操作——全都放在一个叫 Student 的"类"里。这个类就像一张设计图,按照它可以批量创建很多个学生"对象"。
速查
先有个印象,不需要现在全部记住——学完对应章节后再回来看,每个关键字都会变得清晰。
| 关键字 / 语法 | 作用 | 在哪学 |
|---|---|---|
| class | 定义一个类(成员默认私有) | 12.1 / 12.2 |
| struct | 结构体(成员默认公开),与 class 本质相同 | 12.1 |
| public | 公开成员,外部代码可以访问 | 12.3 |
| private | 私有成员,只有类内部能访问 | 12.3 |
| protected | 保护成员,子类也能访问,外部不能 | 12.3 / 12.8 |
| this | 指向当前对象自身的指针 | 12.2 |
| 构造函数 | 对象创建时自动执行的初始化代码 | 12.4 |
| 析构函数 ~ | 对象销毁时自动执行的清理代码 | 12.4 |
| operator | 运算符重载,让自定义类型支持 +、< 等符号 | 12.5 |
| static | 静态成员:所有对象共享同一份 | 12.7 |
| virtual | 虚函数:运行时动态决定调用哪个版本 | 12.9 |
| = 0 | 纯虚函数:子类必须实现,类本身无法实例化 | 12.10 |
知识地图
建议按顺序学习——后面的知识点都建立在前面的基础上。"基础语法"部分覆盖 CSP-J 考纲,"进阶特性"部分是拓展内容。
12.6 拷贝构造函数 与 12.7 静态成员 是独立专题,可在学完基础后按需选读。
先从"基础语法"开始,把 class 的核心用法掌握扎实,这部分是 CSP-J 必会内容。"进阶特性"部分建议在理解基础之后再学习。