类和对象(下)课件.ppt

类和对象(下)课件.ppt

ID:57027981

大小:404.00 KB

页数:82页

时间:2020-07-26

类和对象(下)课件.ppt_第1页
类和对象(下)课件.ppt_第2页
类和对象(下)课件.ppt_第3页
类和对象(下)课件.ppt_第4页
类和对象(下)课件.ppt_第5页
资源描述:

《类和对象(下)课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第三章 类与对象(下)(12学时)本章重点:类的构造函数与析构函数、对象的创建、释放、赋值与复制、友元等内容:3.1构造函数与析构函数3.2对象数组与对象指针3.3const对象与const型数据3.4对象的创建、赋值、复制3.5静态成员3.6友元函数与友元类Next3.1构造函数与析构函数当声明一个类对象时,程序需要为对象分配存储空间,进行必要的初始化,这部分工作随着类的不同而不同。在C++中,由构造函数来完成这些工作。构造函数是属于某一个类的,它可以由用户提供,也可以由系统自动生成。BackNext与构造函数对应的是析构函数,当撤消类对象时,

2、析构函数就回收存储空间,并做一些善后工作。析构函数也属于某一个类,它可以由用户提供,也可以由系统自动生成。BackNextPrevious构造函数是一种特殊的成员函数,它主要用于为对象分配空间,进行初始化。构造函数具有一些特殊的性质。BackNext一、构造函数构造函数的名字必须与类名相同。构造函数可以有任意类型的参数,但不能具有返回值。定义对象时,编译系统会自动地调用构造函数。例3.6BackNextPrevious说明:在实际应用中,通常需要给每个类定义构造函数。如果没有给类定义构造函数,则编译系统自动地生成一个缺省的构造函数。形如:comp

3、lex::complex(){…}构造函数不能像其它成员函数那样被显式地调用,它是在定义对象的同时调用的。构造函数可以是不带参数的。例如构造函数也可采用构造初始化表对简单的数据成员进行初始化,但对数组的初始化应在构造函数体中书写。例如3.2P72对没有定义构造函数的类,其公有数据成员可以用初始化表进行初始化。例3.7(和书73页有参数构造函数对比)BackNextPrevious构造函数的重载与一般的成员函数一样,C++允许重载构造函数,以适应不同的场合。这些构造函数之间以它们所带参数的个数或类型的不同来加以区分。例3.9说明:在重载没有参数和缺

4、省参数的构造函数时,有可能产生二义性。例如BackNextPrevious载重定义:具有相同的函数名,参数的个数或类型不同使用默认参数的构造函数p75对于带参数的构造函数,在定义对象时必须给构造函数传递参数,否则构造函数将不被执行。但在实际使用中,有些构造函数的参数值通常是不变的,只有在特殊情况下才需要改变它的参数值,这时可以将其定义成带缺省参数的构造函数。例如练习(答案)BackNextPrevious如果类中含有用户定义的构造函数,而且构造函数带有参数,则定义对象数组时,可通过初始值表进行赋值。例3.13若类中又同时含有不带参数的构造函数,那

5、么定义对象数组时,也可通过不带参数的构造函数或带有缺省参数的构造函数给对象数组元素赋值。例3.14BackNextPrevious二、析构函数析构函数也是一种特殊的成员函数.它执行与构造函数相反的操作,通常用于执行一些清理任务,如释放分配给对象的内存空间等。析构函数有以下一些特点:析构函数与构造函数名字相同,但它前面必须加一个波浪号(~);BackNextPrevious析构函数没有参数,也没有返回值,而且不能重载,因此在一个类中只能有一个析构函数;当撤消对象时,编译系统会自动地调用析构函数。添加用户希望在最后一次使用对象之后所执行的操作例3.5

6、BackNextPrevious说明:每个类必须有一个析构函数。若没有显式地为一个类定义析构函数,编译系统会自动地生成一个缺省的析构函数。如:~complex(){……}对于大多数类而言,缺省的析构函数已经足够了。但是,如果在一个对象完成其操作之前需要做一些内部处理,则应该显式地定义析构函数,例如:classstring_data{private:char*str;publie:string_data(char*s){str=newchar[strlen(s)+1];strcpy(str,s);}~string_data(){deletestr;

7、}//…};BackNextPrevious否则//…};voidmain(){string_datax(“abc”);//…}xstrabc同类对象的构造和析构的执行顺序classXYZ{……};voidmain(){XYZA,B;……}示例3-8对象A对象B构造析构先构造的后析构,后构造的先析构一、对象数组对象数组是指每一数组元素都是对象的数组,也就是说,若一个类有若干个对象,我们把这一系列的对象用一个数组来存放。对象数组由C++的系统缺省构造函数建立。3.2对象数组与对象指针BackNext例3.12#include

8、h>classexam{intx;public:voidset_x(intn){x=n;}intget_x(){returnx;}};v

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

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

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