句柄类

#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;
}

 

posted @ 2018-12-04 20:17  Lumi_Imp  阅读(197)  评论(0编辑  收藏  举报