《第7章_类和对象(二).ppt》由会员分享,可在线阅读,更多相关《第7章_类和对象(二).ppt(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第7 7章章 类和对象类和对象(二二)7.17.1对对 象象 指指 针针 和和 对对 象象 引引 用用7.27.2对对 象象 数数 组组 和和 对对 象象 指指 针针 数数 组组7.37.3子子对对象象和和堆堆对对象象7.47.4类类的的作作用用域域和和对对象象的的生生存存期期7.57.5结结构构的的应应用用7.17.1 对象指针和对象引用对象指针和对象引用1指向对象的指针的定义、赋值及应用指向对象的指针的定义、赋值及应用7.1.1 对象指针对象指针指向指向对对象的指象的指针针的定的定义义格式如下:格式如下:*=对对象指象指针针也可以被也可以被赋值赋值,赋值赋值的方法通的方法通常有如下两种。
2、常有如下两种。使用同使用同类对类对象的地址象的地址值给对值给对象指象指针针赋值赋值。使用运算符使用运算符newnew为对为对象指象指针赋值针赋值。指指针对针对象成象成员员的表示使用运算符的表示使用运算符 。指向指向对对象的指象的指针针主要用来作函数参数和主要用来作函数参数和返回返回值值。见书见书中例中例7.17.1。(1 1)指向)指向对对象的常指象的常指针针 指向指向对对象的常指象的常指针针定定义义格式如下:格式如下:*const *const ;该该指指针针的地址的地址值值是常量不得改是常量不得改变变,而,而该该指指针针所指向的所指向的对对象可以改象可以改变变。见书见书中例中例7.27.2
3、,例,例7.37.3。2指向对象的常指针和指向常对象的指针指向对象的常指针和指向常对象的指针 thisthis指指针针是系是系统创统创建的,用它来指向正建的,用它来指向正在被某个成在被某个成员员函数所操作的函数所操作的对对象。象。在在实际应实际应用中用中thisthis指指针针被被隐隐含了。在需含了。在需要要时时也可以也可以显显示出示出现现thisthis表示指向表示指向对对象的指象的指针针。见书见书中例中例7.47.4。7.1.2 this指针指针 对对象引用的定象引用的定义义格式如下:格式如下:&=对对象引用常用来作函数的形参。当函数象引用常用来作函数的形参。当函数形参形参为对为对象引用象
4、引用时时,则则要求要求实实参参为对为对象名,象名,实现实现引用引用调调用。用。见书见书中例中例7.57.5。7.1.3 对象引用对象引用7.27.2对象数组和对象指针数组对象数组和对象指针数组 相同相同类类的若干个的若干个对对象的集合构成一个象的集合构成一个对对象数象数组组。对对象数象数组组的定的定义义格式如下。格式如下。对对象数象数组组元素可以被元素可以被赋值赋值。见书见书中例中例7.67.6。7.2.1 对象数组对象数组 对对象指象指针针数数组组是指数是指数组组的元素是指向的元素是指向对对象的指象的指针针,并要求所有数,并要求所有数组组元素都是指向相元素都是指向相同同类类的的对对象的指象的
5、指针针。其格式如下:。其格式如下:*对对象指象指针针数数组组可以被初始化,也可以被可以被初始化,也可以被赋值赋值。见书见书中例中例7.77.7。7.2.2 对象指针数组对象指针数组 指向指向对对象数象数组组的指的指针针可以指向一可以指向一维对维对象象数数组组,也可以指向二,也可以指向二维对维对象数象数组组。指向一指向一维对维对象数象数组组的一的一级级指指针针定定义义格式如下:格式如下:(*(*)见书见书中例中例7.87.8。7.2.3 指向对象数组的指针指向对象数组的指针7.37.3子对象和堆对象子对象和堆对象7.3.1 子对象子对象 在一个在一个类类中可以使用另一个中可以使用另一个类类的的对
6、对象作象作其数据成其数据成员员,这这种种对对象的数据成象的数据成员员称称为为子子对对象。子象。子对对象反映两个象反映两个类类之之间间的包含关系。的包含关系。子子对对象初始化象初始化应应放在构造函数的成放在构造函数的成员员初初始化列表中。成始化列表中。成员员初始化列表放在构造函数初始化列表放在构造函数的函数的函数头头的后面,用冒号的后面,用冒号进进行分隔。具体格行分隔。具体格式如下:式如下:():):见书见书中例中例7.97.9。1使用使用new运算符创建堆对象运算符创建堆对象 7.3.2 堆对象堆对象 使用使用newnew运算符运算符创创建一个建一个对对象或其他象或其他类类型型变变量的格式如下
7、:量的格式如下:new new;或者或者 (););使用使用newnew运算符运算符创创建一个建一个对对象数象数组组或或其他其他类类型数型数组组的格式如下:的格式如下:new new;或者或者 ;对对象数象数组创组创建后可使用如下建后可使用如下语语句,判断句,判断创创建是否成功:建是否成功:if(parrayif(parray=NULL)=NULL)coutcout数数组创组创建失建失败败!/n;/n;exit(1)exit(1);使用使用newnew所所创创建的数建的数组组,可以,可以给给其元素其元素赋值赋值。1使用使用new运算符创建堆对象运算符创建堆对象 7.3.2 堆对象堆对象 使用使
8、用newnew运算符运算符创创建一个建一个对对象或其他象或其他类类型型变变量的格式如下:量的格式如下:new new;或者或者 (););使用使用newnew运算符运算符创创建一个建一个对对象数象数组组或或其他其他类类型数型数组组的格式如下:的格式如下:new new;或者或者 ;对对象数象数组创组创建后可使用如下建后可使用如下语语句,判断句,判断创创建是否成功:建是否成功:if(parrayif(parray=NULL)=NULL)coutcout数数组创组创建失建失败败!/n;/n;exit(1)exit(1);使用使用newnew所所创创建的数建的数组组,可以,可以给给其元素其元素赋值赋
9、值。deletedelete运算符的功能是用来运算符的功能是用来释释放使用放使用newnew运算符运算符创创建的堆建的堆对对象和堆象和堆对对象数象数组组的。的。使用使用deletedelete运算符运算符释释放放对对象或象或变变量量的格式如下:的格式如下:delete delete;2使用使用delete运算符释放对象运算符释放对象 使用使用deletedelete运算符运算符释释放放对对象数象数组组或或其他其他类类型数型数组组的格式如下:的格式如下:delete delete ;见书见书中例中例7.107.10。7.47.4 类的作用域和对象的生存期类的作用域和对象的生存期7.4.1 类的作
10、用域类的作用域 类类的作用域的作用域简简称称为类为类域。域。类类域的范域的范围围是是指指该类该类所定所定义义的的类类体内体内 。每个。每个类类都具有一都具有一个个类类域,域,该类该类成成员员属于属于该类该类的的类类域。域。类类域介于函数域和文件域之域介于函数域和文件域之间间,文件域中可,文件域中可包含包含类类域,域,类类域中可包含函数域。域中可包含函数域。在在C+C+语语言中,言中,对对象的存象的存储类储类有如下有如下3 3种:种:局部局部对对象;象;全部全部对对象;象;静静态对态对象(又分内部静象(又分内部静态态与外部静与外部静态态)。7.4.2 对象的生存期对象的生存期 局部局部对对象是被
11、定象是被定义义在一个函数体内或一在一个函数体内或一个分程序中,其作用域是个分程序中,其作用域是该该函数体或函数体或该该分程分程序内。序内。1局部对象局部对象 全局全局对对象是被定象是被定义义在某个文件中,它的在某个文件中,它的作用域是整个程序。作用域是整个程序。2全局对象全局对象 静静态对态对象按其作用域不同又分象按其作用域不同又分为为内部静内部静态对态对象和外部静象和外部静态对态对象两种。内部静象两种。内部静态对态对象象的作用域是定的作用域是定义义它的函数体或分程序内;外它的函数体或分程序内;外部静部静态对态对象的作用域是定象的作用域是定义义它的文件,并从它的文件,并从定定义时义时开始。开始
12、。见书见书中例中例7.117.11。3静态对象静态对象7.57.5 结构的应用结构的应用 结结构是一种构造数据构是一种构造数据类类型,具有型,具有这这种数种数据据类类型的型的变变量称量称为结为结构构变变量。量。结结构构类类型定型定义义格式如下:格式如下:structstruct ;1结构变量的定义和应用结构变量的定义和应用7.5.1 结构变量和结构数组结构变量和结构数组 定定义结义结构构变变量的格式如下:量的格式如下:structstruct ;结结构构变变量的成量的成员员表示表示规则规则如下:如下:一般一般结结构构变变量的成量的成员员用运算符用运算符.表示。表示。指向指向结结构构变变量的指量
13、的指针针的成的成员员用运算符用运算符-表示。表示。结结构数构数组组元素的成元素的成员员表示用运算符表示用运算符.。结结构构变变量可以被量可以被赋赋初初值值,也可以被,也可以被赋值赋值。给给指向指向结结构构变变量的指量的指针针初始化可以用相初始化可以用相同同结结构构类类型的型的结结构构变变量的地址量的地址值值或用存或用存储储分分配函数配函数mallocmalloc()()。结结构构变变量的量的赋值规则赋值规则如下。如下。可以将一个可以将一个结结构构变变量的量的值赋给值赋给另一个相同另一个相同结结构构类类型的型的结结构构变变量。量。结结构构变变量的运算主要是量的运算主要是该结该结构构变变量的成量的
14、成员员的运算。的运算。结结构构变变量成量成员员的运算取决于的运算取决于该该成成员员的的类类型。型。结结构构变变量整体运算只有量整体运算只有赋值赋值运算。运算。见书见书中例中例7.127.12。结结构构变变量和指向量和指向结结构构变变量的指量的指针针在程序在程序中通常作中通常作为为函数的参数和函数的返回函数的参数和函数的返回值值。结结构构变变量作函数参数量作函数参数实现传值调实现传值调用,其用,其调调用效用效率率较较低,指向低,指向结结构构变变量的指量的指针针作函数参数作函数参数实实现传现传址址调调用,其用,其调调用效率用效率较较高。高。见书见书中例中例7.137.13。数数组组元素元素为结为结
15、构构变变量的数量的数组组称称为结为结构数构数组组。结结构数构数组组中各个元素必中各个元素必须须是相同是相同结结构构类类型的型的结结构构变变量。量。结结构数构数组组可以在定可以在定义义或或说说明明时时用初始用初始值值表表进进行初始化,也可以使用行初始化,也可以使用赋值赋值表达式表达式语语句句对结对结构数构数组组的各个元素的成的各个元素的成员赋员赋值值。见书见书中例中例7.147.14。2结构数组结构数组 在在C+C+语语言中,可以使用同言中,可以使用同样样的关的关键键字字 structstruct定定义类义类,其格式如下:,其格式如下:structstruct ;7.5.2 使用使用struct定义类定义类 使用使用structstruct关关键键字定字定义义的的类类与使用与使用classclass关关键键字定字定义义的的类类唯一区唯一区别别是使用是使用structstruct定定义义的的类类中默中默认访问权认访问权限的成限的成员员是公是公有的,而使用有的,而使用classclass定定义义的的类类中默中默认访问权认访问权限的成限的成员员是私有的。是私有的。见书见书中例中例7.157.15。作作业题业题和上机和上机练习题练习题