实验6 类和对象2

上传人:zw****58 文档编号:45958071 上传时间:2018-06-20 格式:PDF 页数:8 大小:255.71KB
返回 下载 相关 举报
实验6 类和对象2_第1页
第1页 / 共8页
实验6 类和对象2_第2页
第2页 / 共8页
实验6 类和对象2_第3页
第3页 / 共8页
实验6 类和对象2_第4页
第4页 / 共8页
实验6 类和对象2_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《实验6 类和对象2》由会员分享,可在线阅读,更多相关《实验6 类和对象2(8页珍藏版)》请在金锄头文库上搜索。

1、实验实验六六 类与对象类与对象 2 实验目的实验目的 熟悉类的基本结构和定义方法; 深刻理解类的构造函数的作用,学会分析对象的各种组合定义形式中构造函数的调用细节(调用哪个 构造函数,调用顺序等) ; 掌握友元的作用及其声明方式; 掌握类的静态数据成员和静态函数成员的用法; 掌握类的指针成员的使用特点; 了解动态内存与非动态内存的区别,掌握动态内存的开辟、应用和删除这三项基本操作,理解动态内 存的概念; 巩固断点调试操作。 一. 实验任务 已有 Date 类定义如下: class Date int y,m,d; public: Date(); Date(int y,int m,int d);

2、void Print(); void SetDate(int y,int m,int d); ; Date:Date() couty=y; this-m=m; this-d=d; couty=y; this-m=m; this-d=d; 类的作用域:类的定义及实现体 类的私有成员在类外无法直接访问。 void main() Date t(1990,1,1); couta=a; void FriendTest(Date t) coutSetDate(2003,3,3); 1) 在文件头部添加以上 3 个函数的原型声明 2) 用以下的主函数进行测试: void main() Date t(2000

3、,10,10); /1.your code here 调用 Test1,将对象 t 传入 /2.在上面的调用语句处加断点进行调试,查看对象作形参情况下,实参与形参结合过程调用构 造函数了吗?结果意味着什么? (有无新对象创建?形参与实参是一个对象, 还是两个不同的对象?) coutname 数组 4) 开辟与指针成员 score 相应的堆空间(空间大小由 SCORE_NUMBER 确定) 5) 如果参数 score!=NULL,则用其指向的数组元素值为 this-score 指向的数组空间赋值 6) 平均值 average 初始化为 0 7) 修改 count 值使对象数加 1 8) 注意 1

4、:形参与数据成员同名时的区分方法:this 指针,如 this-name; 9) 注意 2:指针成员不能直接用参数赋值,如 this-score=score; 需要利用 new 动态创建 score 指向的空间,然后利用循环对每个元素赋值 10) 注意 3:对数组成员 name 赋值时,不能对数组名赋值,利用字符串赋值函数 strcpy 完成内 容拷贝。 有参构造函数 2:Student(char *name, Date t,int score_number=2, double *score=NULL) 11) 通过 Date 有参构造函数初始化对象 birthday,用参数 t 进行初始化

5、12) 用参数 score_number 初始化常量成员 SCORE_NUMBER 13) 用参数 name 设置 this-name 数组 14) 开辟与指针成员 score 相应的堆空间(空间大小由 SCORE_NUMBER 确定) 15) 如果参数 score!=NULL,则用其指向的数组元素值为 this-score 指向的数组空间赋值 16) 平均值 average 初始化为 0 17) 修改 count 值使对象数加 1 18) 注意 1:形参与数据成员同名时的区分方法:this 指针,如 this-name; 19) 注意 2:指针成员不能直接用参数赋值,如 this-score

6、=score; 需要利用 new 动态创建 score 指向的空间,然后利用循环对每个元素赋值 20) 注意 3:对数组成员 name 赋值时,不能对数组名赋值,利用字符串赋值函数 strcpy 完成内 容拷贝。 拷贝构造函数:Student(Student /写输入提示, cin 成绩 计算当前对象 SCORE_NUMBER 门成绩平均值 average:void Average( ); 获取平均成绩:double GetAverage( ); 获取当前学生总数:static int GetCount( ); 输出对象信息:void Print( )/输出姓名、生日、平均值。 按照以下要求完

7、成类的测试函数,按要求操作并分析解答相关问题: #include #include #include “Student.h” #define NULL 0 void main() cout”未创建任何对象时 Studen: GetCount()=”Studen: GetCount()endl; /0.利用类名调用静态函数 GetCount,体会静态函数和静态数据成员的无对象访问特性。 const int NUMBER=2; const int PTR_NUMBER=3; char name310=“zhang”,”wang”,”Li” ; Date date 3=Date(1991,1,1),

8、Date(1992,1,1) ,Date(1993,1,1); /1.your code here 定义一个 Student 对象数组 s,要求能存储 3 个学生对象,用上面的 name 数组、date 数组、NUMBER 对 s 中的 3 个对象进行初始化。 /2.在上面定义语句行加断点调试查看:每个数组元素创建过程中,顺序调用了哪些构造函数? cout”创建 3 对象数组后,共有”; /3. your code here 调用 GetCount( )函数查看当前已有学生对象数,并输出; , Student *ptr3; /定义一个 Student 指针数组 ptr /4.your code

9、 here 让 ptr 0指向数组 s 中的第 1 个对象 s0 /5.your code here 让 ptr 1指向数组 s 中的第 3 个对象 s2 /6.your code here 用 new 在堆区开辟一个 Student 对象空间,用”zhao”,Date(1991,2,2), NUMBER 对其 进行初始化,让 ptr 2指向该对象 /7. your code here 调用 GetCount( )函数查看当前已有学生对象数,并输出; for(i=0;i PTR_NUMBER;i+) /6.your code here 调用 InputScore 函数输入与 ptr 关联的各对

10、象成绩 /7.your code here 调用 Average 函数,求算与 ptr 关联的各对象的成绩平均值 /8. your code here 利用 GetAverage()函数获取 ptr 关联对象的成绩平均值 /并根据该值从小到大的顺序重新排列 ptr 数组元素 for(i=0;i PTR_NUMBER;i+) /9. your code here 按新顺序依次调用 Print( )函数 /10. your code here 释放 ptr2指向的堆内存 /11. your code here 调用 GetCount( )函数查看当前已有学生对象数,并输出; 5. 文件结构要求: 将各类的定义和实现按照定义(.h) 、实现 (.cpp)分离的形式拆分到相应的文件中。 将主函数写在一个独立的 cpp 文件中

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 教育学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号