句柄类¶
句柄类可以实现隐藏
- 实现隐藏,把private部分隐藏起来
- 减少重复编译
头文件改了一点点,所有包含这个头文件的源文件都需要重新编译。公有的一般不会改变,私有的可能会变。减少编译就把私有的藏起来。私有的放到源文件里。
大项目的文件多,把私有的隐藏,减少修改编译的时间。
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;
}