首页 > 代码库 > 【ThinkingInC++】32、一个句柄类
【ThinkingInC++】32、一个句柄类
头文件
/** * 功能:句柄类,头文件只包含公共的接口和单一的指针,该指针指向一个没有 完全定义的类 * 时间:2014年8月25日07:52:42 * 作者:cutter_point */ #ifndef HANDLE_H_INCLUDED #define HANDLE_H_INCLUDED class Handle { struct Cheshire; //这个只是声明,如果要改变Cheshire的组成,唯一要重新编译的是 //Handle因为头文件并没有动 Cheshire* smile; //来!微笑^_^ public: void initialize(); //初始化 void cleanup(); //回收内存 int read(); //输出当前的数据 void change(int); //改变当前的值 }; #endif // HANDLE_H_INCLUDED
声明文件
/** * 功能:包含具体实现的结构体被隐藏在实现文件中 * 时间:2014年8月25日07:52:37 * 作者:cutter_point */ #include"Handle.h" #include"../require.h" //定义Handle的接口 // struct Cheshire; //这个只是声明 struct Handle::Cheshire { int i; }; // void initialize(); //初始化 void Handle::initialize() { smile=new Cheshire; //其实这个机构体就一个int的大小 smile->i=0; //大小初始化为0 } // void cleanup(); //回收内存 void Handle::cleanup() { delete smile; //清除指针指向的结构 } // int read(); //输出当前的数据 int Handle::read() { return smile->i; //返回当前指针指向的对象的值 } // void change(int); //改变当前的值 void Handle::change(int x) { smile->i=x; }
测试文件
/** * 功能:包含具体实现的结构体被隐藏在实现文件中 * 时间:2014年8月8日10:08:19 * 作者:cutter_point */ #include"Handle.cpp" int main() { Handle u; u.initialize(); u.read(); u.change(1); u.cleanup(); return 0; }
【ThinkingInC++】32、一个句柄类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。