没有合适的资源?快使用搜索试试~ 我知道了~
C++编程思想中文版\03.pdf
需积分: 0 2 下载量 201 浏览量
2009-03-03
22:28:34
上传
评论
收藏 446KB PDF 举报
温馨提示
试读
14页
C++编程思想中文版\03.pdf C++编程思想中文版\03.pdf C++编程思想中文版\03.pdf C++编程思想中文版\03.pdf
资源详情
资源评论
资源推荐
下载
下载
第3章 隐 藏 实 现
一个典型的C语言库通常包含一个结构和一组运行于该结构之上的相关函数。前面我们已
经看到C + +是怎样处理那些在概念上和语法上相关联的函数的,那就是:
把函数的声明放在一个 s t r u c t内,改变这些函数的调用方法,在调用过程中不再把 s t r u c t的
地址作为第一个参数传递,在程序中增加一个新的数据类型(这样就不必在 s t r u c t 关键字前加
一个t y p e d e f之类的声明了)。
这样做带来很多方便
—
有助于组织代码,使程序易于编写和阅读。然而,在使得 C + +库
比以前更容易的同时,存在一些其他问题,特别是在安全与控制方面。本章重点讨论 s t r u c t 中
的边界问题。
3.1 设置限制
在任何关系中,存在相关各方都遵从的边界是很重要的。当我们建立了一个库之后,我们
就与该库的用户(也可以叫用户程序员)建立了一种关系,他是另外的程序员,但他需要用我
们的库来编写一个应用程序或用我们的库来建立更大的库。
在C语言中,s t r u c t同其他数据结构一样,没有任何规则,用户可以在 s t r u c t 中做他们想做
的任何事情,没有办法来强制任何特殊的行为。比如,即使我们已经看到了上一章中提到的
i n i t i a l i z e ( )函数和c l e a n u p ( )函数的重要性,但用户有权决定是否调用它们(我们将在下一章看到
更好的方法)。再比如,我们可能不愿意让用户去直接处理 s t r u c t 中的某些成员,但在C语言中
没有任何方法可以阻止用户。一切都是暴露无遗的。
需要控制对结构成员的存取有两个理由:一是让用户避开一些他们不需要使用的工具,这
些工具对数据类型内部的处理来说是必须的,但对用户特定问题的接口来说却不是必须的。这
实际上是为用户提供了方便,因为他们可以很容易地知道,对他们来说哪些是重要的,哪些是
可以忽略的。
二是设计者可以改变 s t r u c t 的内部实现,而不必担心对用户程序员产生影响。在上一章
s t a c k的例子中,我们想以大块的方式来分配存储空间,提高速度,而不是在每次增加成员时调
用malloc() 函数来重新分配内存。如果这些库的接口部分与实现部分是清楚地分开的,并作了
保护,那么我们只需要让用户重新连接一遍就可以了。
3.2 C++的存取控制
C + +语言引进了三个新的关键字,用于在 s t r u c t 中设置边界:p u b l i c 、p r i v a t e 和p r o t e c t e d 。
它们的使用和含义从字面上就能理解。这些存取指定符只在 s t r u c t 声明中使用,它们可以改变
在它们之后的所有声明的边界。使用存取指定符,后面必须跟上一个冒号。
p u b l i c 意味着在其后声明的所有成员对所有的人都可以存取。 p u b l i c 成员就如同一般的
s t r u c t成员。比如,下面的s t r u c t声明是相同的:
p r i v a t e关键字则意味着,除了该类型的创建者和类的内部成员函数之外,任何人都不能存
取这些成员。p r i v a t e在设计者与用户之间筑起了一道墙。如果有人试图存取一个私有成员,就
会产生一个编译错误。在上面的例子中,我们可能想让 struct B中的部分数据成员隐藏起来,
只有我们自己能存取它们:
第3章 隐 藏 实 现 43
下载
剩余13页未读,继续阅读
liuchen180126
- 粉丝: 7
- 资源: 30
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0