C++启蒙课程:第10章 对象和类
我们将学会创建“智能对象”,它们不仅能存数据,还能自己处理数据,让代码升级为“高科技机器人军团”!
类的诞生:从指令到对象
学习“超级蓝图”`class`的定义,以及`public`和`private`的“智能包裹”封装术。
对象的生命之旅
掌握“诞生机”`constructor`、“清场队”`destructor`和“自我身份卡”`this`。
进阶对象魔法
学会`const`成员函数的“安全锁”和抽象的“冰山模型” ADT。
课时一:从指令到对象:类的诞生
(覆盖知识点 10.1 - 10.2.6)
10.1 厨师 vs. 机器人
过程性编程像“厨师拿食谱”(关注步骤)。OOP像“智能机器人”(数据和操作捆绑)。
cook(data);
serve(data);
10.2 “智能包裹” (封装)
`public` 是包裹上的“按钮”(接口),任何人都能按。`private` 是内部的“精密电路”(数据),禁止外界直接触碰。
10.2.4 “超级蓝图” (类)
`class` 是一张蓝图。对象 (sally, john) 是根据蓝图造出来的、各自独立的“实例”。
10.2.3 成员函数实现
在类外定义成员函数时,必须使用“作用域解析运算符” (::) 来指明这个函数属于哪个类。
课时二:对象的生命之旅:构造与析构
(覆盖知识点 10.3 - 10.5)
10.3 对象的“诞生机” (构造)
构造函数 (Constructor) 是在创建对象时自动调用的“诞生机”,负责初始化所有内部零件。
10.3.4 对象的“清场队” (析构)
析构函数 (~) 是在对象生命周期结束时自动调用的“清场队”,负责释放资源。
Object obj;
10.4 “自我身份卡” (this)
`this` 是一个隐藏指针,指向“调用我”的那个对象。*this 就是对象本身。
10.5 对象数组
创建对象数组时,编译器会为数组中的“每个”元素调用**默认构造函数** (无参数的)。
课时三:进阶对象魔法:作用域与常量
(覆盖知识点 10.3.6, 10.6, 10.7)
10.3.6 “安全锁” (const)
在函数头后加 const,就像给函数上了一把“安全锁” 🔒。它承诺**不会修改**调用它的对象。
const Stock s; (只读对象)10.7 “冰山模型” (ADT)
类是实现“抽象数据类型”(ADT)的工具。`public` 是水面上的“接口”,`private` 是水面下隐藏的“实现”。
deposit(), withdraw(), show()
double balance;string account_number;
编程实践与作业 (10.9)
是时候检验你作为“智能对象设计师”的实力了!
练习 1:BankAccount 类声明 (10.9 复习题 5)
任务:
定义一个 BankAccount 类,包含姓名、账号和存款数据成员,以及创建、显示、存入和取出的成员函数。只提供类声明(接口)。
点击查看参考答案
练习 2:BankAccount 构造函数实现 (10.9 复习题 7)
任务:
为第一课时定义的 BankAccount 类提供带参数的构造函数实现,并演示如何创建对象数组(需要默认构造函数)。
点击查看参考答案
练习 3:const 成员函数 (10.9 复习题 9)
任务:
假设有一个 Stock 类,添加返回各个私有数据成员值的 const 成员函数 (Getter)。
点击查看参考答案
本章知识点总结与复习
核心概念回顾
| 核心概念 | 解释/功能 | 关键用法/示例 |
|---|---|---|
| 类 (Class) | 用户定义的类型规范,“超级蓝图”。 | class Stock { ... }; |
| 对象 (Object) | 类的实例,根据蓝图创建的实体。 | Stock my_stock; |
| 封装/隐藏 | `public` (接口) 和 `private` (隐藏实现)。 | private: double balance; |
| 构造函数 | “诞生机”,创建对象时自动调用,用于初始化。 | Stock(const string & co); |
| 默认构造函数 | 无参数或所有参数都有默认值。创建对象数组时必须。 | Stock() {} |
| 析构函数 | “清场队”,对象销毁时自动调用,用于清理。 | ~Stock() {} |
| `this` 指针 | “自我身份卡”,指向调用该方法的对象。 | return *this; |
| `const` 成员函数 | “安全锁”,承诺不修改调用对象。 | void show() const; |
| ADT | 抽象数据类型。“冰山模型”,类是其C++实现。 | Public 接口 / Private 实现 |
编程练习与代码实现 (10.10 练习 2)
任务: 编写一个 Person 类,实现其三种构造函数调用(无参数、一个参数、两个参数),并使用不同的方法显示结果。