实验16+构造函数定义与使用.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验16构造函数定义与使用

实验?构造函数定义与使用 16.1 概述 一、目的要求 二、.?日期类的声明和对象的定义; 2.集合类的声明和对象的定义; 3.职工类的声明和对象的定义。 16.2 案例 一、学生类的声明及其对象的初始化 1.问题的提出 学生类有成员数据:学号、姓名、性别、年龄、C++成绩;要求有如下成员函数:构造函数、缺省的构造函数、修改成绩的函数、输出所有成员的函数。main()完成对象的定义和有关成员函数的测试。 2.分析 成员数据的确定方法:学号一般由纯数字组成,可以确定为整型数;但当学号中包含有字母、汉字或起始学号由0开始时,应使用字符数组表示。姓名应该用字符数组表示。性别可用字符数组表示汉字“男”或“女”,也可用数字表示(如1表示“男”,2表示“女”,可自己事先约定。)或布尔值表示。而年龄用int类型,考虑到成绩可能会出现有小数,所以用float表示。 成员函数的确定方法:构造函数其作用是完成对对象的成员数据初始化。一般情况下,上述说明的成员数据,在不能通过计算得到时,其数据成员都需要通过构造函数实现初始化。构造函数可以重载,考虑到定义对象时,没有提供初始化所需的数据,定义了缺省的构造函数。为保证数据安全,类中成员数据一般都限定为私有访问权限,所以类中需要定义输出数据的成员函数,当需要访问私有数据成员时,需通过具有公有访问权限的成员函数-公共接口完成。 3.程序代码 class Student{ //学生类的声明 int Id; //学号 char Name[20]; //姓名 char Sex[4]; //性别 int Age; //年龄 float Cpp; //C++成绩 public: Student() //缺省的构造函数 { Id=Age=Cpp=0; Name[0]=Sex[0]=\0; } Student(int i,char *n,char *s,int a,float c) { //构造函数 Id=i; strcpy(Name,n); strcpy(Sex,s); Age=a; Cpp=c; } void SetCpp(float c){Cpp=c;}//修改成绩的函数 void Print() //输出成员数据的函数 { cout学号:Id\t姓名:Name\t性别:Sex; cout\t年龄:Age\tC++成绩:Cpp\n; } }; void main() //main()函数测试部分 { Student s1(9907105,张一,男,20,86);//调用构造函数 s1.Print(); //输出 s1.SetCpp(92); //修改C++成绩 s1.Print(); Student s2; //调用缺省的构造函数 s2.Print(); s2=s1; s2.Print(); } 4.思考 (1) 当类中没有定义缺省的构造函数时,是否会出现语法错误? (2) 当缺省的构造函数的函数体为空时,输出对象s2的成员数据时,会出现什么结果? 16.3 实验指导 一、日期类的声明和对象的定义 1. 题目要求 声明一个日期类,有成员数据:年、月、日;有成员函数:构造函数实现对所有成员数据的初始化;输出的成员函数,要求输出格式为:年-月-日。main()完成对象的定义和输出成员函数的测试。 2.分析 成员数据年、月、日应该为整型数,并限定为私有访问权限;成员函数限定为公有访问权限。构造函数实现对所有成员数据的初始化,所以构造函数的形参个数和类型,与成员数据的个数和类型一致。 值得注意的是:构造函数实现成员数据初始化时,赋值号的左边是成员名,右边是形参名。 请完成程序代码的编写、调试,并得到正确结果。 3. 思考 如果考虑输入的年、月、日数据是合法数据(即不允许出现13月、32日等),构造函数应如何处理? 二、集合类的声明和对象的定义 1.题目要求 声明一个集合类,有成员数据:int a[10];有成员函数:构造函数(要求完成对数组a中所有元素的初始化);输出的成员函数,要求每行输出5个数;判断一个数是否在数组中的函数,如果在数组中,返回数组中下标的值。main()完成对象的定义和相关成员函数的测试。 2.分析 构造函数要求完成对数组a中所有元素的初始化,其形参应该提供一个具有10个数据的数组或指向该数组的指针变量。如: 构造函数名(int b[]) { int i; for(i=0;i10;i++)a[i]=b[i]; } 判断一个数是否在数组中的成员函数,其函数返回值为数组元素的下标,函数的返回值类型应该是整型,

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档