第7章类和对象二_第1页
第7章类和对象二_第2页
第7章类和对象二_第3页
第7章类和对象二_第4页
第7章类和对象二_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第7章类和对象二 7.17.1对 象 指 针 和 对 象 引 用对 象 指 针 和 对 象 引 用 7.27.2对 象 数 组 和 对 象 指 针 数 组对 象 数 组 和 对 象 指 针 数 组 7.37.3子对象和堆对象子对象和堆对象 7.47.4类的作用域和对象的生存期类的作用域和对象的生存期 7.57.5结构的应用结构的应用 第7章类和对象二 1指向对象的指针的定义、赋值及应用指向对象的指针的定义、赋值及应用 7.1.1 对象指针对象指针 指向对象的指针的定义格式如下:指向对象的指针的定义格式如下: * * = 第7章类和对象二 对象指针也可以被赋值,赋值的方法通对象指针也可以被赋值,

2、赋值的方法通 常有如下两种。常有如下两种。 使用同类对象的地址值给对象指针使用同类对象的地址值给对象指针 赋值。赋值。 使用运算符使用运算符newnew为对象指针赋值。为对象指针赋值。 指针对象成员的表示使用运算符指针对象成员的表示使用运算符 。 指向对象的指针主要用来作函数参数和指向对象的指针主要用来作函数参数和 返回值。返回值。 见书中例见书中例7.17.1。 第7章类和对象二 (1 1)指向对象的常指针)指向对象的常指针 指向对象的常指针定义格式如下:指向对象的常指针定义格式如下: * * const const ; 该指针的地址值是常量不得改变,而该该指针的地址值是常量不得改变,而该

3、指针所指向的对象可以改变。指针所指向的对象可以改变。 见书中例见书中例7.27.2,例,例7.37.3。 2指向对象的常指针和指向常对象的指针指向对象的常指针和指向常对象的指针 第7章类和对象二 this this指针是系统创建的,用它来指向正指针是系统创建的,用它来指向正 在被某个成员函数所操作的对象。在被某个成员函数所操作的对象。 在实际应用中在实际应用中thisthis指针被隐含了。在需指针被隐含了。在需 要时也可以显示出现要时也可以显示出现thisthis表示指向对象的指表示指向对象的指 针。针。 见书中例见书中例7.47.4。 7.1.2 this指针指针 第7章类和对象二 对象引用

4、的定义格式如下:对象引用的定义格式如下: ; 或者或者 ( ();); 第7章类和对象二 使用使用newnew运算符创建一个对象数组或运算符创建一个对象数组或 其他类型数组的格式如下:其他类型数组的格式如下: new new ; 或者或者 ; 第7章类和对象二 对象数组创建后可使用如下语句,判断对象数组创建后可使用如下语句,判断 创建是否成功:创建是否成功: if(parray= =NULL)if(parray= =NULL) cout cout数组创建失败!数组创建失败!/n;/n; exit(1) exit(1); 使用使用newnew所创建的数组,可以给其元素所创建的数组,可以给其元素

5、赋值。赋值。 第7章类和对象二 1使用使用new运算符创建堆对象运算符创建堆对象 7.3.2 堆对象堆对象 使用使用newnew运算符创建一个对象或其他运算符创建一个对象或其他 类型变量的格式如下:类型变量的格式如下: new new ; 或者或者 ( ();); 第7章类和对象二 使用使用newnew运算符创建一个对象数组或运算符创建一个对象数组或 其他类型数组的格式如下:其他类型数组的格式如下: new new ; 或者或者 ; 第7章类和对象二 对象数组创建后可使用如下语句,判断对象数组创建后可使用如下语句,判断 创建是否成功:创建是否成功: if(parray= =NULL)if(pa

6、rray= =NULL) cout cout数组创建失败!数组创建失败!/n;/n; exit(1) exit(1); 使用使用newnew所创建的数组,可以给其元素所创建的数组,可以给其元素 赋值。赋值。 第7章类和对象二 delete delete运算符的功能是用来释放使用运算符的功能是用来释放使用 newnew运算符创建的堆对象和堆对象数组的。运算符创建的堆对象和堆对象数组的。 使用使用deletedelete运算符释放对象或变量运算符释放对象或变量 的格式如下:的格式如下: delete delete ; 2使用使用delete运算符释放对象运算符释放对象 第7章类和对象二 使用使用d

7、eletedelete运算符释放对象数组或运算符释放对象数组或 其他类型数组的格式如下:其他类型数组的格式如下: delete delete ; 见书中例见书中例7.107.10。 第7章类和对象二 7.4.1 类的作用域类的作用域 类的作用域简称为类域。类域的范围是类的作用域简称为类域。类域的范围是 指该类所定义的类体内指该类所定义的类体内 。每个类都具有一。每个类都具有一 个类域,该类成员属于该类的类域。个类域,该类成员属于该类的类域。 类域介于函数域和文件域之间,文件域中可类域介于函数域和文件域之间,文件域中可 包含类域,类域中可包含函数域。包含类域,类域中可包含函数域。 第7章类和对象

8、二 在在C+C+语言中,对象的存储类有如下语言中,对象的存储类有如下3 3种:种: 局部对象;局部对象; 全部对象;全部对象; 静态对象(又分内部静态与外部静静态对象(又分内部静态与外部静 态)。态)。 7.4.2 对象的生存期对象的生存期 第7章类和对象二 局部对象是被定义在一个函数体内或一局部对象是被定义在一个函数体内或一 个分程序中,其作用域是该函数体或该分程个分程序中,其作用域是该函数体或该分程 序内。序内。 1局部对象局部对象 第7章类和对象二 全局对象是被定义在某个文件中,它的全局对象是被定义在某个文件中,它的 作用域是整个程序。作用域是整个程序。 2全局对象全局对象 第7章类和对

9、象二 静态对象按其作用域不同又分为内部静静态对象按其作用域不同又分为内部静 态对象和外部静态对象两种。内部静态对象态对象和外部静态对象两种。内部静态对象 的作用域是定义它的函数体或分程序内;外的作用域是定义它的函数体或分程序内;外 部静态对象的作用域是定义它的文件,并从部静态对象的作用域是定义它的文件,并从 定义时开始。定义时开始。 见书中例见书中例7.117.11。 3静态对象静态对象 第7章类和对象二 结构是一种构造数据类型,具有这种数结构是一种构造数据类型,具有这种数 据类型的变量称为结构变量。据类型的变量称为结构变量。 结构类型定义格式如下:结构类型定义格式如下: struct str

10、uct ; 1结构变量的定义和应用结构变量的定义和应用 7.5.1 结构变量和结构数组结构变量和结构数组 第7章类和对象二 定义结构变量的格式如下:定义结构变量的格式如下: struct struct ; 结构变量的成员表示规则如下:结构变量的成员表示规则如下: 一般结构变量的成员用运算符一般结构变量的成员用运算符. .表示。表示。 指向结构变量的指针的成员用运算符指向结构变量的指针的成员用运算符- -表表 示。示。 结构数组元素的成员表示用运算符结构数组元素的成员表示用运算符. .。 第7章类和对象二 结构变量可以被赋初值,也可以被赋值。结构变量可以被赋初值,也可以被赋值。 给指向结构变量的

11、指针初始化可以用相给指向结构变量的指针初始化可以用相 同结构类型的结构变量的地址值或用存储分同结构类型的结构变量的地址值或用存储分 配函数配函数malloc()malloc()。 第7章类和对象二 结构变量的赋值规则如下。结构变量的赋值规则如下。 可以将一个结构变量的值赋给另一个相同结可以将一个结构变量的值赋给另一个相同结 构类型的结构变量。构类型的结构变量。 结构变量的运算主要是该结构变量的成结构变量的运算主要是该结构变量的成 员的运算。结构变量成员的运算取决于该成员的运算。结构变量成员的运算取决于该成 员的类型。结构变量整体运算只有赋值运算。员的类型。结构变量整体运算只有赋值运算。 见书中

12、例见书中例7.127.12。 第7章类和对象二 结构变量和指向结构变量的指针在程序结构变量和指向结构变量的指针在程序 中通常作为函数的参数和函数的返回值。结中通常作为函数的参数和函数的返回值。结 构变量作函数参数实现传值调用,其调用效构变量作函数参数实现传值调用,其调用效 率较低,指向结构变量的指针作函数参数实率较低,指向结构变量的指针作函数参数实 现传址调用,其调用效率较高。现传址调用,其调用效率较高。 见书中例见书中例7.137.13。 第7章类和对象二 数组元素为结构变量的数组称为结构数数组元素为结构变量的数组称为结构数 组。组。 结构数组中各个元素必须是相同结构类结构数组中各个元素必须是相同结构类 型的结构变量。结构数组可以在定义或说明型的结构变量。结构数组可以在定义或说明 时用初始值表进行初始化,也可以使用赋值时用初始值表进行初始化,也可以使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论