上文还没有考虑到类与类之间的继承关系。下面我们就来具体的谈谈这个方面。 还是以上面提到的那篇文章中的例子来说明。 执行类: lxImplement.h文件内容: #include "lxTest.h"
class ClxImplement { public: ClxImplement(); ~ClxImplement();
void DoSomething();
private: ClxTest m_lxTest;
void lxTest(); }; lxImplement.cpp文件内容: #include "lxImplement.h"
ClxImplement::ClxImplement() { }
ClxImplement::~ClxImplement() { }
void ClxImplement::lxTest() { m_lxTest.DoSomething(); }
void ClxImplement::DoSomething() { lxTest(); } 接口类: lxExp.h文件内容: // 前置声明 class ClxImplement;
class ClxExp { public: ClxExp(); virtual ~ClxExp();
void DoSomething();
private: // 声明一个类ClxImplement的指针,不需要知道类ClxImplement的定义 ClxImplement *m_pImpl; };
lxExp.cpp文件内容: // 在这里包含类ClxImplement的定义头文件 #include "lxImplement.h"
ClxExp::ClxExp() { m_pImpl = new ClxImplement; }
ClxExp::~ClxExp() { if (m_pImpl) delete m_pImpl; }
void ClxExp::DoSomething() { m_pImpl->DoSomething(); }
|