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

第五章 隐藏实现

作者: 意不适 | 来源:发表于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