头文件
/** * 功能:句柄类,头文件只包含公共的接口和单一的指针,该指针指向一个没有 完全定义的类 * 时间: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; }
时间: 2024-10-24 20:00:01