跳转至

句柄类

句柄类可以实现隐藏

  1. 实现隐藏,把private部分隐藏起来
  2. 减少重复编译

头文件改了一点点,所有包含这个头文件的源文件都需要重新编译。公有的一般不会改变,私有的可能会变。减少编译就把私有的藏起来。私有的放到源文件里。

大项目的文件多,把私有的隐藏,减少修改编译的时间。

cpp编译成sdl、lib,保密。 头文件给别人用,把私有的都藏起来,源文件保密。头文件给别人用的时候如果私有的暴漏了,数据就知道了,所以使用句柄类。

重要的设计希望把私有的隐藏起来,不重要的无所谓。

面向对象程序设计:

公有的(接口)一般不变,变的都是私有的。

示例

头文件

class Demo
{
private:
//    int i;//私有的要把它隐藏起来,现在还在暴漏
    //下面这两行 一般不会修改,所以不会重复编译
    class Cheshire;//句柄类 类的声明
    Cheshire* smile; //把私有的隐藏起来。 神秘。
public:
    void initialize();
    int read();
    void change(int);
};

源文件

class Demo::Cheshire
{
public:
    int i;//私有的成员
};
void Demo::initialize()
{
    smile = new Cheshire;
    smile->i = 0;
}

int Demo::read()
{
    return smile->i;
}

void Demo::change(int x)
{
    smile->i = x;
}

测试

void test()
{
    Demo d;
    d.change(100);
    cout << d.read() << endl;
}