uml3 构造函数和析构函数.ppt

uml3 构造函数和析构函数.ppt

ID:56527965

大小:98.00 KB

页数:30页

时间:2020-06-27

uml3 构造函数和析构函数.ppt_第1页
uml3 构造函数和析构函数.ppt_第2页
uml3 构造函数和析构函数.ppt_第3页
uml3 构造函数和析构函数.ppt_第4页
uml3 构造函数和析构函数.ppt_第5页
资源描述:

《uml3 构造函数和析构函数.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、UML与程序设计(C++)第3章构造函数和析构函数3.1类与对象类与对象的区别一个类描述一类事物,描述这类事物应共同具有的属性。一个对象是类的一个实例,具有相同的结构和共享共同的行为,所没有共享的是它们的状态值。对象的状态值分别保存在它们各自的对象中。对象是在系统执行过程中创建的实体。在程序中,我们只看到类,类定义了它的所有对象共享的代码,另外,还提供了结构样板,用于在运行时每个不同的对象。在运行时我们只有对象,程序的计算任务是由对象承担的。3.1类与对象定义对象属于不同类的对象在不同的时刻、不同的地方分别被建立。全局对象在主函数开始执行前被建立,

2、局部对象在程序执行遇到它们的对象定义时才被建立。定义对象时,为其分配内存。classDesk {public: intweight; inthigh; intwidth; intlength; };Deska;//全局对象voidfn(){staticDeskds;//静态局部对象Deskda;//局部对象Desk*pd=newDesk;//堆对象Desknd[50];//局部对象数组…deletepd;}3.1类与对象对象的初始化对于基本类型的变量、指针、数组以及结构体变量等都可以在声明的同时进行初始化,例如:inta=1;int*pa=&a;i

3、ntb[]={1,2,3,4};structStudent{intStudentNumber;charName[8];};voidfunc(){Students={1,”王小二”};…}3.1类与对象对象也存在初始化的问题,在声明对象的时候进行数据成员设置,称为对象的初始化。但是,对象的初始化同普通变量的初始化有所区别,这是由类的特殊性所决定的。classTDate{public:voidSetDate(inty,intm,intd);intIsLeapYear();voidPrint();private:intyear,month,day;};v

4、oidmain(){TDatedate1={2007,1,1};...}错误!相当于直接给私有数据成员赋值:date1.year=2007;date1.month=1;date1.day=1;如果这些数据成员是公有的,则可以这样这样初始化。3.1类与对象解决方法:定义一个成员函数来完成初始化的工作classTDate{public:voidSetDate(inty,intm,intd);intIsLeapYear();voidPrint();voidInit(){year=2011;month=3;day=21;}private:intyear,m

5、onth,day;};voidmain(){TDatedate1;date1.Init();...}方法可行,但并不理想!3.2构造函数构造函数的概念和特点类的封装性体现在不能从外界直接访问私有及保护的数据成员,因此类对象的初始化工作只能由类的成员函数来完成,因为它们可以访问类的私有和保护成员。在C++中,类有一个特殊的成员函数,称为构造函数(Constructor),其作用就是在对象被创建时利用特定的值构造对象,将对象初始化为一个特定的状态,构造函数在对象被创建时由系统自动调用。3.2构造函数构造函数除了具有一般成员函数的特征之外,还有一些特殊的

6、性质:构造函数的函数名与类名相同。构造函数可以重载。构造函数没有返回值,不能指定返回值类型,即使void也不可以。构造函数被声明为公有成员函数,编译器在遇到对象声明语句时,会自动生成对构造函数的调用语句。可以在程序中调用构造函数创建无名对象。3.2构造函数classTDate{public:TDate();//构造函数voidSetDate(inty,intm,intd);intIsLeapYear();voidPrint();private:intyear,month,day;};TDate::TDate(){//构造函数实现year=1900;

7、month=1;day=1;}voidmain(){TDatedate1;//自动调用Tdate()...}3.2构造函数如果一个类对象是另一个类的数据成员,则在那个类对象创建时所调用的构造函数中,对该成员对象自动调用其构造函数。classStudent{public:Student(){cout<<"constructingstudent.";semesHours=100;gpa=3.5;}//其他公共成员protected:intsemesHours;floatgpa;};classTeacher{public:Teacher(){cout

8、<<"constructingteacher.";}};3.2构造函数classTutorPair{public:Tu

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。