C++编程思想笔记--隐藏实现

友元:

如果程序员想允许不属于当前结构的一个成员函数存取结构中的数据,可以在类中声明这个函数为友元。友元必须子啊一个类中声明,

嵌套友元

一个嵌套的struct并不能自动地获得存取私有成员的权限,要取得存取私有成员的权限,要先声明一个嵌套的struct, 然后声明它是全局范围使用的一个友元。友元用来解决部分C++的突发问题,也说明了C++不是纯面向对象的语言 。

对象布局

当我们开始使用一个存取指定符(public protect private)时, 我们就已经完全进入了C++的世界。在一个特定的存取块内,这些变量在内存中肯定是相邻的,然而存取块本身可以不按定义的顺序在对象中出现。部分机器的结构或操作环境可对私有成员和保护成员提供明确的支持,将其放在特定的位置上。存取指定信息通常是在编译期间消失的。在程序运行期间,对象编程了一个存储区域。一般来说,程序员写程序时,依赖特定实现的任何东西都是 不合适的。

句柄类

使用句柄类的动机:

1.可见的实现部分

有些项目不可让最终用户看到其实现部分,如头文件中的一些信息。有必要把一个编译好的实际结构放在实现文件中,而不是暴露在头文件中。

2.减少重复编译

class handle
{
    struct cheshire;
    cheshire* smile;
public:
    void initialize();
    void cleanup();
    int read();
    void change(int);
}
cheshire 结构包含了具体的实现,其主体被隐藏在了实现文件中(cheshire的接口在handle类中暴露,但类定义的头文件却不用暴露,保护了私有信息)

你可能感兴趣的:(C++编程思想笔记--隐藏实现)