#ifndef HANDLE_H
#define HANDLE_H
//文件呗修改 或 所依赖的头文件被修改时 项目管理员 需要 重复编译该文件
//易碎的基类问题
//解决技术 句柄类
//1. 有关的实现消失 留下指针 指向一个结构
// 结构的定义与其所有的成员函数的定义一同出现在实现文件中
// 只要接口不变 头文件就不需要变动 实现部分可以按需更改
// 完成后只需要对实现文件重新编译 然后连接到项目中
// 头文件 之包含公共接口 和 一个单指针 该指针指向一个没有完全定义的类
class Handle {
struct Cheshire;
Cheshire * smile;
public:
void init();
void cleanup();
int read();
void change(int);
};
#endif // !HANDLE_H
#include"Stash.h"
struct Handle::Cheshire {
int i;
};
void Handle::init()
{
smile = new Cheshire;
smile->i = 0;
}
void Handle::cleanup()
{
delete smile;
}
int Handle::read()
{
return smile->i;
}
void Handle::change(int x)
{
smile->i = x;
}