
C++实验六:类和对象——对象传递及静态成员
5星
- 浏览量: 0
- 大小:None
- 文件类型:DOCX
简介:
本实验旨在通过创建、初始化以及传递对象来深入理解C++中的类与对象概念,并学习如何使用静态成员变量和函数。
### C++高级程序设计实验报告-实验六
#### 实验目的
1. 理解静态成员(包括静态数据成员与静态成员函数)的作用及使用方法。
2. 掌握友元机制,理解其如何允许外部访问类的私有或保护成员。
3. 学习常量类型的应用,了解如何通过声明为常对象和实现常成员函数来确保不修改对象的状态。
#### 实验内容
##### 6.2.1 程序阅读与分析
**程序一**
- **问题一:该程序能编译吗?为什么?**
- **答案:不能。因为静态成员函数没有 `this` 指针,所以无法直接访问非静态数据成员。**
- **问题二:变量 `nTotalObj` 的作用是什么?它是如何实现的呢?**
- **答案:该变量充当计数器的角色,用于统计已创建的对象数量;通过在构造和析构函数中对它进行操作来维护其值。**
- **问题三:如果主函数及类 CStudent 中的数据成员不允许修改的情况下应如何处理程序中的错误?**
- **答案:可以将静态方法 `SetAge` 删除,并把数据成员 `nTotalObj` 的访问权限设为公共(public)。**
**程序二**
- **问题一:请指出并改正该程序的两个主要错误。**
- **第一处错误及修正方案:CTeacher 类中定义了 CStudent 对象,但没有相应的构造函数来初始化它;需要在 CStudent 中添加一个无参构造器。**
- **第二处错误及处理方式:CStudent 的成员变量 age 为私有属性,在其他类中无法直接访问,因此需将 CStudent 声明为 CTeacher 类的友元类。**
**程序三**
- **问题一:请识别并修复该程序中的两个主要错误(主函数和 Date 类的数据成员不允许修改)。**
- **第一处错误及修正方案:在调用 `Date::showdate()` 方法时,将常量对象传递给它会导致限定符丢失;需要把此方法声明为 const 成员。**
- **第二处错误及解决方案:构造函数应使用初始化列表来设置成员变量的初始值(例如,在 Date 类中添加适当的初始化器)。**
##### 6.2.2 程序设计
**某商店库存管理**
定义一个 `Store` 类,用于模拟货物购进和卖出的过程。该类包含两个主要方法:`SetBuyin()` 和 `SetSale()` ,分别用来处理进货和销售信息,并更新库存总量。
在主函数中创建 Store 对象实例 a 并使用上述方法进行操作,最终输出当前的总库存量。
通过以上实验内容的学习与实践,可以加深对 C++ 中静态成员、友元以及常类型的理解及应用。
全部评论 (0)


