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