第4讲(构造函数和析构函数).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4讲 教学内容 4.3 构造函数和析构函数 4.3.1 构造函数 4.3.3析构函数 教学重点和难点 1构造函数作用和使用方法 2析构函数的作用和使用方法 教学方法: 通过程序代码演示,详细讲解概念,举一反三,让学生理解,构造函数的作用,调用时机,特点;析构函数的作用,调用时机,特点. 另外,可以用单步调试的方法,演示,让学生观察程序的执行流程,跟踪观察类的构造函数,析构函数,成员函数的执行顺序。 教学学时 2 学时 教学过程 一构造函数作用和使用方法 作用: 构造函数是用于初始化类的属性成员变量的。 声明基本数据类型的变量,例如int I ,可以给I赋初值,在声明对象的时候,也可以给对象的数据成员赋初值。但是基本数据类型的变量的初始化,编译器会自动产生代码来完成,但是对于类对象的初始化,编译器不知道如何产生代码来实现初始化,因此如果需要对对象进行初始化,程序员就需要自己编写初始化程序,这里的初始化程序,也就是构造函数。如果程序员没有自己写初始化程序,却在定义对象的时候给对象初始化,就会语法错误。 2 构造函数的特点: a)构造函数是没有任何返回值的,其名字必须与类名一致 b)当生成一个类的实例对象时,将自动调用构造函数 c)C++规定,每个类必须有构造函数,没有构造函数就不能创建对象。 d)若一个类中没有提供任何构造函数,那么c++自动提供一个默认的构造函数,该默认构造函数是一个没有参数的构造函数,它仅仅负责创建对象而不做任何赋值操作。只要类中提供了任意一个构造函数(不管有没有参数),那么c++就不再 提供默认构造函数 3 默认构造函数: 不需任何输入参数的构造函数称为默认构造函数 也就是有以下情况: 1)没有参数的构造函数 2)或者有参数,但是所有参数都有默认值的构造函数 例1:修改上次课的学生类,将上次课中的学生类对象的数据用初始化方式设定 //程序演示: #include string.h #include iostream.h #include iomanip.h class STU { private: char name[20]; double math,english,ave; public: STU(); STU(char *n,double m, double e); double GetAve();//求平均成绩 void OutPutData();//输出学生信息 }; //在类的外面完成类的成员函数的定义 STU::STU()//没有参数,所以称为默认构造函数 { strcpy(name, 张三); math = 80; english = 90; } STU::STU(char *n ,double m ,double e ) { strcpy(name, n); math = m; english = e; } /*STU::STU(char *n = zhang ,double m = 100 ,double e =100)//虽然有参数,但每个参数都有默认值,也为默认构造函数 { strcpy(name, n); math = m; english = e; }*/ void STU:: OutPutData() { cout 姓名 数学 英语 endl; cout name setw(5)math setw(5)english endl; } double STU::GetAve() { ave = (math + english) / 2; return ave; } void main(void) { STU one(zhang,60,70); //构造的调用时机:定义对象时,自动调用对应的匹配的构造函数, // 如果没有STU(char *n ,double m ,double e )构造函数,则此处语法错误 one.OutPutData(); cout 平均成绩是one.GetAve()endl; STU two; // two.STU();//错误!构造函数只能自动调用,不能被显式调用 two.OutPutData(); cout 平均成绩是two.GetAve()endl; } 二 析构函数作用和使用方法 1作用:完成对象被删除前的一些清理工作 2特点: a)析够函数只能有一个,且不能有参数,析构函数的使 用形式: ~ 类名() b)如果一个类没有自己写析构函数,编译器会自动生成一个默认析构函数,默认析构函数是一个空函数 c)对象的内存空间注销前,系统自动调用它,然后释放此对象所属的空间 d)一般,如果希望程序在对象被注销之前的时刻自

文档评论(0)

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

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

1亿VIP精品文档

相关文档