c++编程思想---数据隐藏

1.1 设置限制

       在任何关系中,存在相关各方都遵从的边界是很重要的。当我们建立了一个库之后,我们就与该库的用户(也可以叫用户程序员)建立了一种关系,他是另外的程序员,但他需要用我们的库来编写一个应用程序或用我们的库来建立更大的库。

       需要控制对结构成员的存取有两个理由:一是让用户避开一些他们不需要使用的工具,这些工具对数据类型内部的处理来说是必须的,但对用户特定问题的接口来说却不是必须的。这实际上是为用户提供了方便,因为他们可以很容易地知道,对他们来说哪些是重要的,哪些是可以忽略的。
        二是设计者可以改变 s t r u c t的内部实现,而不必担心对用户程序员产生影响。

1.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。它们的使用和含义从字面上就能理解。

1.3 友元

      如果程序员想允许不属于当前结构的一个成员函数存取结构中的数据,那该怎么办呢?他可以在s t r u c t内部声明这个函数为友元。注意,一个友元必须在一个 s t r u c t内声明,这一点很重要,因为他(和编译器)必须能读取这个结构的声明以理解这个数据类型的大小、行为等方面的规则。有一条规则在任何关系中都很重要,那就是“谁可以访问我的私有实现部分”。
       程序员可以把一个全局函数声明为友元类,也可以把另一个 s t r u c t中的成员函数甚至整个s t r u c t都声明为友元类。
1.4 类

       存取控制通常是指实现细节的隐藏。将函数包含到一个 s t r u c t内(封装)来产生一种带数据和操作的数据类型,但由存取控制在该数据类型之内确定边界。这样做的原因有两个:首先是决定哪些用户可以用,哪些用户不能用。我们可以建立内部的数据结构,而用户只能用接口部分的数据,我们不必担心用户会把内部的数据当作接口数据来存取。这就直接导出第二个原因,那就是将具体实现与接口分离开来。如果该结构被用在一系列的程序中,而用户只是对公共的接口发送消息,这样程序员就可以改变所有声明为 p r i v a t e的成员而不必去修改用户的代码。

1.5 句柄类(handle classes)

       C + +中的存取控制允许将实现与接口部分分开,但实现的隐藏是不完全的。编译器必须知道一个对象的所有部分的声明,以便创建和管理它。我们可以想象一种只需声明一个对象的公共接口部分的编程语言,而将私有的实现部分隐藏起来。但 C + +在编译期间要尽可能多地做静态类型检查。这意味着尽早捕获错误,也意味着程序具有更高的效率。然而这对私有的实现部
分来说带来两个影响:一是即使程序员不能轻易地访问实现部分,但他可以看到它;二是造成一些不必要的重复编译。


 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值