5 构造函数和析构函数

上传人:油条 文档编号:26873103 上传时间:2018-01-02 格式:PPT 页数:43 大小:1.60MB
返回 下载 相关 举报
5  构造函数和析构函数_第1页
第1页 / 共43页
5  构造函数和析构函数_第2页
第2页 / 共43页
5  构造函数和析构函数_第3页
第3页 / 共43页
5  构造函数和析构函数_第4页
第4页 / 共43页
5  构造函数和析构函数_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《5 构造函数和析构函数》由会员分享,可在线阅读,更多相关《5 构造函数和析构函数(43页珍藏版)》请在金锄头文库上搜索。

1、第9章 怎样使用类和对象,9.1 利用构造函数对对象初始化9.2 析构函数9.3 调用构造函数和析构函数的顺序9.4 对象数组9.5 对象指针,教学目标与教学重点,教学目标掌握使用类和对象进行编程的方法;理解构造函数的概念;掌握编写构造函数的方法;理解析构函数的概念;理解构造函数的调用顺序;教学重点:掌握构造函数的重载;掌握有默认值的构造函数的写法;理解构造函数的调用顺序,广州大学华软软件学院,2,9.1.1 对象的初始化,1直接对类初始化,2)对对象成员初始化,#include using namespace std;class Time public: int hour; int minu

2、te; int sec;int main()Time t1=14,56,30; coutt1.hour:t1.minute:t1.sec; return 0;,#include using namespace std;class Time public: int hour=0; int minute=0; int sec=0;int main() coutTime.hour:Time.minute:hour; cinminute; cinsec;void Time:show_time() couthour:minute:sechour; cinminute; cinsec;void Time:

3、show_time() couthour:minute:secendl;int main() Time t1; t1.set_time(); t1.show_time(); Time t2; t2.show_time(); return 0;,#include using namespace std;class Time public: void set_time(); void show_time(); Time(); private: int hour; int minute; int sec;Time:Time() hour=0; minute=0; sec=0;,说明:构造函数类外定义

4、,需在先类体内声明,9.1.2 用构造函数实现数据成员的初始化,说明:,(1) 在类对象进入其作用域时调用构造函数。(2) 构造函数没有返回值,因此也不需要在定义构造函数时声明类型,这是它和一般函数的一个重要的不同之点。(3) 构造函数不需用户调用,也不能被用户调用。(4) 在构造函数的函数体中不仅可以对数据成员赋初值,而且可以包含其他语句。但是一般不提倡在构造函数中加入与初始化无关的内容,以保持程序的清晰。(5) 如果用户自己没有定义构造函数,则C+系统会自动生成一个构造函数,只是这个构造函数的函数体是空的,也没有参数,不执行初始化操作。,9.1.3 带参数的构造函数,1.带参数构造函数,B

5、ox:Box(int h,int w,int len) height=h; width=w; length=len;int Box:volume( ) return(height*width*length);int main( ) Box box1(12,25,30); coutThe volume of box1 is “ box1.volume( )endl; Box box2(15,30,21); coutThe volume of box2 is “ box2.volume( )endl; return 0;,#include using namespace std;class Box

6、 public: Box(int,int,int); int volume( ); private: int height; int width; int length;,形参列表,实参列表,9.1.4 用参数初始化表对数据成员初始化,类名:构造函数名(参数表 ):成员初始化表 构造函数体 ,Box:Box(int h,int w,int len):height(h),width(w,ength(len) ,定义结构体类型的一般形式,Box:Box(int h,int w,int len) height=h; width=w; length=len;,例:,等价,函数体外将用形参值初始化化各数

7、据成员,9.1.5 构造函数的重载,函数重载的目的,什么是函数重载,是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。重载的本质是多个函数共用同一个函数名。,重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,增强程序的可读性。,9.1.5 构造函数的重载,Box:Box() height=10; width=10; length=10; int Box:volume() return(height*width*length); int main() Box box1; coutThe volume of box1 is box1.volu

8、me()endl; Box box2(15,30,25); coutThe volume of box2 is box2.volume()endl; return 0; ,#include using namespace std;class Box public: Box(); Box(int h,int w,int len): height(h),width(w),length(len) int volume(); private: int height; int width; int length;,两个函数名字相同,一个无参数,一个有参数, 为重载函数,两个函数名字相同,不能根据名字决定

9、调用哪个函数,但是可以依据参数的匹配结果,9.1.6 使用默认参数的构造函数,int main() Box box1; coutThe volume of box1 is “ box1.volume()endl; Box box2(15); coutThe volume of box2 is“ box2.volume()endl; Box box3(15,30); coutThe volume of box3 is“ box3.volume()endl; Box box4(15,30,20); coutThe volume of box4 is“ box4.volume()endl; retu

10、rn 0;,#include using namespace std;class Boxpublic:Box(int h=10,int w=10,int len=10); int volume(); private:int height;int width;int length;Box:Box(int h,int w,int len) height=h;width=w;length=len;int Box:volume()return(height*width*length);,三个函数的参数分别缺省3个,2个,1个,调用时取默认值,9.1.6 使用默认参数的构造函数,说明: (1) 应该在声明构造函数时指定默认值,而不能只在定义构造函数时指定默认值。(2) 程序第5行在声明构造函数时,形参名可以省略。(3) 如果构造函数的全部参数都指定了默认值,则在定义对象时可以给一个或几个实参,也可以不给出实参。(4) 在一个类中定义了全部是默认参数的构造函数后,不能再定义重载构造函,

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

当前位置:首页 > 行业资料 > 其它行业文档

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