C++ 实验四 构造与析构编程

preview
需积分: 0 0 下载量 61 浏览量 更新于2023-11-30 收藏 57KB DOC 举报
1.设计一个程序,定义一个矩形类,包括数据成员和函数成员。要求有构造函数、析构函数,完成赋值、显示、计算矩形的面积等接口,并编写main函数进行测试。 2.重载构造函数。修改上题,一种构造函数用整型变量记录矩形的长和宽,另一种构造函数用double型记录矩形的长和宽,然后完成成员函数及主函数。 3.构造一个类countstr,要求用构造函数设置计数器count的初始值为0,成员函数countchar()不返回任何值,它要求用户输入一段文字,按Enter键后结束计算,用count记录输入的字符数,成员函数getchar()返回count的整数值。 【实验报告】 实验名称:面向对象程序设计 实验题目:构造与析构编程 专业班级:计算 2142 姓名:周建梅 学号:2111411206 实验教学考核和成绩评定办法强调了实验预习、实验过程和实验报告的重要性。实验成绩不合格者需补做,且实验报告应包含实验目的、步骤、记录、处理和体会等内容。 一、实验目的 1. 进一步理解和应用类与对象的概念。 2. 掌握构造函数和析构函数的原理和使用。 3. 学习和运用重载构造函数。 4. 实现一个涉及类和对象的复杂程序。 二、实验内容 1. 定义一个矩形类Rect,包含数据成员nLength和nWidth,以及构造函数、析构函数、计算面积的接口。要求实现赋值、显示和计算功能,并通过main函数进行测试。 ```cpp class Rect{ public: int Area_int(); Rect(int l, int w); ~Rect(); private: int nLength; int nWidth; }; ``` 2. 修改矩形类,添加重载构造函数,分别接受整型和双精度浮点型参数,实现成员函数及主函数。 ```cpp class Rect{ public: int Area_int(); double Area_double(); Rect(double l, double w); Rect(int l, int w); ~Rect(); private: int nLength; int nWidth; double mLength; double mWidth; }; ``` 3. 创建countstr类,构造函数初始化计数器count为0,countchar()函数接收用户输入并计数,getchar()返回计数器的整数值。 ```cpp class countstr{ public: void countchar(); int getchar(); private: int count; }; ``` 三、编程分析及运行结果 1. 对于第一个矩形类的实现,构造函数用于初始化长度和宽度,析构函数打印矩形面积,Area_int()计算整型面积。main函数中创建矩形对象并接收用户输入的长度和宽度。 ```cpp #include <iostream> using namespace std; // 其余代码略 int main(){ int l, w; cin >> l >> w; Rect p(l, w); return 0; } ``` 2. 第二个矩形类增加了重载构造函数,可以处理不同类型的输入。实现类似第一个矩形类的功能,但需要两个构造函数分别处理整型和双精度浮点型数据。 3. countstr类的实现,countchar()函数读取输入直到Enter键,count记录字符数。getchar()返回计数值。 ```cpp // countstr类的实现细节 ``` 通过本次实验,学生将深入理解类的构造和析构过程,掌握如何利用构造函数初始化对象,使用析构函数进行资源清理。同时,通过重载构造函数处理不同类型的输入,增强对类设计的灵活性。countstr类展示了如何通过成员函数跟踪和管理对象状态,为后续的面向对象编程打下坚实基础。