- 1、本文档共143页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 类和对象及其封装性 本章要点 1 类的定义及其类对象的封装性 2 类成员函数的定义 3 类对象的定义和使用 4 类的构造函数和析构函数 5 类对象的动态创建和释放 6 类对象的赋值与复制 7 与类对象有关的指针 8 类的静态成员 9 类对象成员、类对象数组和类对象参数 10 友元(友元函数、友元成员和友元类) 11 类的只读成员函数定义 3.1.1 C++ 的类类型定义 在 C++ 中,用户可以使用类类型关键字 class 定义自 己的抽象数据类型。这种定义方法和形式与使用结构 体类型关键字 struct 定义数据结构类型十分相似。例 如,可以用 struct 定义描述学生基本信息的数据结构类 型 Student: struct Student { int num; char name[20]; char sex; }; 3.1.2 类类型成员的访问权限 为了实现类对象的封装性(数据隐藏和提供访问接 口)类类型定义为类成员提供了私有和公有两种基本 访问权限供用户选择。 1 私有成员 ① 访问权限:只限于类成员访问。 ② 关键字:private 声明或从定义体开始的缺省声 明。例如,下面的 Student 定义与前面的 Student 定义等价的: 3.1.3 类类型的构造 类类型定义为所定义的数据类型建立了一个明确的 边界,类定义体中的私有成员(数据成员和成员函 数)和公有成员函数的实现细节均被封装在此边界 内,使得这些类成员和实现细节无法从类对象外被访 问,从而受到保护。同时对类公有成员(数据成员和 成员函数)的访问和调用又为类对象之间的通讯提供 了接口,使得类对象成为一个既访问安全又操作方便 的抽象数据实体。下面以一个简单机器人类为例说明 类类型的构造: 3.2 类成员函数的定义 1 成员函数的性质 类的成员函数在声明和定义的格式上以及用法和作 用上与一般函数基本一致。但由于成员函数是属于 某一个类的成员,因此它与一般函数的区别表现: ⑴ 作用域在类定义体所确定的边界内,即可以访问 本类的任何成员(私有和公有的数据和函数)。 ⑵ 需要根据功能和作用指定成员函数的访问权限, 一般情况下,将向类外提供操作功能的成员函数 指定为 public,将只为类内提供服务功能的成员函 数指定为 private,将只为类内和派生类提供服务 功能的成员函数指定为 protected。 3 类的内置(内联)成员函数定义方式: ⑴ 隐式定义 —— 函数定义在类定义体中,此时只 要函数的实现代码符合内置函数的定义要求,该 成员函数就会自动被定义内置函数,而说明内置 函数的关键字 inline 可以忽略。例如: class point { int x, y; public: void setpoint(int vx, int vy) // 内置函数 { x = vx; y = vy; } }; 其中成员函数 setpoint 定义的首部与加缀 inline 的 首部 “inline void setpoint(int vx, int vy)” 等效。 需要特别注意的是:由于调用内置函数需要将内置 函数的目标代码复制到它被调用的位置,因此编译器 在进行内置函数的调用编译时,必须能获得被调内置 函数的目标代码。这就需要在调用内置函数的源代码 文件中必须包含被调用内置函数的定义代码的源代码 文件。也就是说,如果某个被调用的内置成员函数定 义在类定义体中,该类定义体代码被保存在一个头文 件中,例如 “student.h”,则调用该内置函数的源文件应 添加预编译命令 #include “student.h”。如果该内置函数 定义在类定义体外,代码包含在类实现文件中,例如 “student.cpp”,则调用该内置函数的源文件应添加预编 译命令 #include “student.cpp”。 3.3 类对象的定义和使用 3.3.1 类与对象的关系 ⑴ 类是一组具有相同属性和行为的对象的抽象,是创 建对象的模板,是用户使用 class 创建的自定义类 型。类一旦创建,其作用可与系统预定义类型(例 如,int、double 等)类比。 ⑵ 对象是类的实例,创建类的对象可以与创建预定义 类型的变量(例如,int x;、double d; 等)类比。 ⑶ 类只是提供了该类
文档评论(0)