美文网首页
第五章 隐藏实现

第五章 隐藏实现

作者: 意不适 | 来源:发表于2017-03-05 13:39 被阅读0次

简介:讨论结构中的边界(访问控制)

5.1 设置限制

控制对结构成员的访问的理由:

1. 让客户程序员远离一些他们不需要的工具。

2.允许库的设计者改变struct的内部实现,而不必担心会对客户程序员产生影响。

5.2 C++的访问控制

public、private、protected:继承结构可以访问protected成员,但不能访问private成员。

5.3 友元

friend(友元):允许显式地不属于当前结构的一个成员函数访问当前结构中的数据。

struct X; // 不完全类型说明(incomplete type specification)

friend可以在声明函数的同时又将它作为struct的友元。

嵌套友元:嵌套的结构并不能自动获得访问private成员的权限。要获得访问私有成员的权限,必须遵守特定的规则

1. 首先,声明(而不定义)一个嵌套结构。

2. 然后,声明它是全局范围使用的一个friend

3. 最后,定义这个结构。结构的定义必须与friend的生命分开,否则编译器将不把它看作成员。

5.4 对象布局

访问块:被访问说明符限定的一组声明。

在一个特定的访问块内,这些变量的存放都是连续的,但不一定按照声明的顺序存放。

访问说明符是结构的一部分。访问说明信息是在编译期间消失的。在程序运行期间,对象变成了一个存储区域,别无他物。

5.5 类

访问控制通常是指实现细节的隐藏(implementation hiding)。

classstruct的每个方面都一样,除了:class中的成员默认为private,而struct中的成员默认为public

问题:c05:Class.cpp中a.f()b.f()的输出结果为什么一样?

所有成员必须在类中声明的唯一原因是:让编译器中知道对象有多大,以便为它们分配合适的存储空间,并保证他们的一致性。

5.6 句柄类

隐藏实现和减少重复编译

相关文章

网友评论

      本文标题:第五章 隐藏实现

      本文链接:https://www.haomeiwen.com/subject/qxpdgttx.html