欢迎来到天天文库
浏览记录
ID:52228109
大小:220.50 KB
页数:41页
时间:2020-04-03
《第 5 章(2)━━构造函数和析构函数.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库。
1、C++程序设计第5章(2)━━构造函数和析构函数1主要内容对象的初始化构造函数默认的构造函数this指针对象的生存期和作用域拷贝构造函数、默认拷贝构造函数析构函数调用构造函数和析构函数的顺序实现类型转换的构造函数━━对象赋值时的隐式调用(特殊情况)实现类型转换的构造函数━━对象赋值时的显式调用(一般情况)对象成员2对象的初始化━━使用初始化数据列表若类中所有的成员数据都为公有型,则定义对象时,允许使用初始化数据列表对其成员数据进行初始化,方法与结构体变量相同,用花括号将各成员数据的初值括起来赋给该对象。若类中有成
2、员数据为私有型或保护型,则定义对象时,不允许使用初始化数据列表对其初始化。【例】(学生类、初始化数据列表)#includeclassStudent{public:intid;charname[8];intscore;voidprint(){cout<<“学号:”<3、、初始化数据列表)#includeclassStudent{intid;charname[8];intscore;public:voidprint(){cout<<“学号:”<4、作用是初始化对象的成员数据。上例程序中并没有显式调用构造函数Student(),而是在定义对象s时,由系统自动调用构造函数Student()。【例】(学生类、构造函数)#include#includeclassStudent{intid;charname[8];intscore;public:Student(inti,char*na,ints){id=i;strcpy(name,na);score=s;}voidprint(){cout<<“学号:”<5、名:”<6、数。⑤若所声明的类是用于定义对象的,其构造函数必须是公有型。若所声明的类仅用于派生其它类,其构造函数可以是保护型。⑥定义对象时,系统根据对象名后面括号内给出的实参,自动调用相应的构造函数,完成该对象成员数据的初始化工作。⑦若类中没有声明构造函数,则系统会自动产生一个默认的构造函数。5构造函数━━在函数体中对各成员数据赋初值构造函数━━在函数头后面用成员初始化表对各成员数据赋初值#includeclassClock{inthour,minute,second;public:Clock(int7、h,intm,ints){hour=h;minute=m;second=s;}voidsettime(inth,intm,ints){hour=h;minute=m;second=s;}voidshowtime(){cout<classClock{inthour,minute,second8、;public:Clock(inth,intm,ints):hour(h),minute(m),second(s){}voidsettime(inth,intm,ints){hour=h;minute=m;second=s;}voidshowtime(){cout<
3、、初始化数据列表)#includeclassStudent{intid;charname[8];intscore;public:voidprint(){cout<<“学号:”<4、作用是初始化对象的成员数据。上例程序中并没有显式调用构造函数Student(),而是在定义对象s时,由系统自动调用构造函数Student()。【例】(学生类、构造函数)#include#includeclassStudent{intid;charname[8];intscore;public:Student(inti,char*na,ints){id=i;strcpy(name,na);score=s;}voidprint(){cout<<“学号:”<5、名:”<6、数。⑤若所声明的类是用于定义对象的,其构造函数必须是公有型。若所声明的类仅用于派生其它类,其构造函数可以是保护型。⑥定义对象时,系统根据对象名后面括号内给出的实参,自动调用相应的构造函数,完成该对象成员数据的初始化工作。⑦若类中没有声明构造函数,则系统会自动产生一个默认的构造函数。5构造函数━━在函数体中对各成员数据赋初值构造函数━━在函数头后面用成员初始化表对各成员数据赋初值#includeclassClock{inthour,minute,second;public:Clock(int7、h,intm,ints){hour=h;minute=m;second=s;}voidsettime(inth,intm,ints){hour=h;minute=m;second=s;}voidshowtime(){cout<classClock{inthour,minute,second8、;public:Clock(inth,intm,ints):hour(h),minute(m),second(s){}voidsettime(inth,intm,ints){hour=h;minute=m;second=s;}voidshowtime(){cout<
4、作用是初始化对象的成员数据。上例程序中并没有显式调用构造函数Student(),而是在定义对象s时,由系统自动调用构造函数Student()。【例】(学生类、构造函数)#include#includeclassStudent{intid;charname[8];intscore;public:Student(inti,char*na,ints){id=i;strcpy(name,na);score=s;}voidprint(){cout<<“学号:”<5、名:”<6、数。⑤若所声明的类是用于定义对象的,其构造函数必须是公有型。若所声明的类仅用于派生其它类,其构造函数可以是保护型。⑥定义对象时,系统根据对象名后面括号内给出的实参,自动调用相应的构造函数,完成该对象成员数据的初始化工作。⑦若类中没有声明构造函数,则系统会自动产生一个默认的构造函数。5构造函数━━在函数体中对各成员数据赋初值构造函数━━在函数头后面用成员初始化表对各成员数据赋初值#includeclassClock{inthour,minute,second;public:Clock(int7、h,intm,ints){hour=h;minute=m;second=s;}voidsettime(inth,intm,ints){hour=h;minute=m;second=s;}voidshowtime(){cout<classClock{inthour,minute,second8、;public:Clock(inth,intm,ints):hour(h),minute(m),second(s){}voidsettime(inth,intm,ints){hour=h;minute=m;second=s;}voidshowtime(){cout<
5、名:”<6、数。⑤若所声明的类是用于定义对象的,其构造函数必须是公有型。若所声明的类仅用于派生其它类,其构造函数可以是保护型。⑥定义对象时,系统根据对象名后面括号内给出的实参,自动调用相应的构造函数,完成该对象成员数据的初始化工作。⑦若类中没有声明构造函数,则系统会自动产生一个默认的构造函数。5构造函数━━在函数体中对各成员数据赋初值构造函数━━在函数头后面用成员初始化表对各成员数据赋初值#includeclassClock{inthour,minute,second;public:Clock(int7、h,intm,ints){hour=h;minute=m;second=s;}voidsettime(inth,intm,ints){hour=h;minute=m;second=s;}voidshowtime(){cout<classClock{inthour,minute,second8、;public:Clock(inth,intm,ints):hour(h),minute(m),second(s){}voidsettime(inth,intm,ints){hour=h;minute=m;second=s;}voidshowtime(){cout<
6、数。⑤若所声明的类是用于定义对象的,其构造函数必须是公有型。若所声明的类仅用于派生其它类,其构造函数可以是保护型。⑥定义对象时,系统根据对象名后面括号内给出的实参,自动调用相应的构造函数,完成该对象成员数据的初始化工作。⑦若类中没有声明构造函数,则系统会自动产生一个默认的构造函数。5构造函数━━在函数体中对各成员数据赋初值构造函数━━在函数头后面用成员初始化表对各成员数据赋初值#includeclassClock{inthour,minute,second;public:Clock(int
7、h,intm,ints){hour=h;minute=m;second=s;}voidsettime(inth,intm,ints){hour=h;minute=m;second=s;}voidshowtime(){cout<classClock{inthour,minute,second
8、;public:Clock(inth,intm,ints):hour(h),minute(m),second(s){}voidsettime(inth,intm,ints){hour=h;minute=m;second=s;}voidshowtime(){cout<
此文档下载收益归作者所有