在用C++写要导出类的库时,我们经常只想暴露接口,而隐藏类的实现细节。也就是说我们提供的头文件里只提供要暴露的公共成员函数的声明,类的其他所有信息都不会在这个头文件里面显示出来。这个时候就要用到接口与实现分离的技术。
下面用一个最简单的例子来说明。
类ClxExp是我们要导出的类,其中有一个私有成员变量是ClxTest类的对象,各个文件内容如下:
lxTest.h文件内容:
class ClxTest { public: ClxTest(); virtual ~ClxTest(); void DoSomething(); }; | lxTest.cpp文件内容:
#include "lxTest.h"
#include using namespace std;
ClxTest::ClxTest() {}
ClxTest::~ClxTest() {}
void ClxTest::DoSomething() { cout << "Do something in class ClxTest!" << endl; }
//////////////////////////////////////////////////////////////////////////// | lxExp.h文件内容:
#include "lxTest.h"
class ClxExp { public: ClxExp(); virtual ~ClxExp(); void DoSomething(); private: ClxTest m_lxTest; void lxTest(); }; | |