收藏 (0) +1 (0) +1 (0) +1
收藏成功查看收藏>>

正在阅读:C++中接口与实现分离的技术C++中接口与实现分离的技术

2006-08-09 09:54 出处: 作者:StarLee 责任编辑:xietaoming

  然后,修改类ClxExp。

  修改后的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();
}

  通过上面的方法就实现了类ClxExp的接口与实现的分离。请注意两个文件中的注释。类ClxExp里面声明的只是接口而已,而真正的实现细节被隐藏到了类ClxImplement里面。为了能在类ClxExp中使用类ClxImplement而不include头文件lxImplement.h,就必须有前置声明class ClxImplement,而且只能使用指向类ClxImplement对象的指针,否则就不能通过编译。在发布库文件的时候,我们只需给用户提供一个头文件lxExp.h就行了,不会暴露类ClxExp的任何实现细节。而且我们对类ClxTest的任何改动,都不需要再给用户更新头文件(当然,库文件是要更新的,但是这种情况下用户也不用重新编译)。这样做还有一个好处就是,可以在分析阶段由系统分析员或者高级程序员来先把类的接口定义好,甚至可以把接口代码写好(例如上面修改后的lxExp.h文件和lxExp.cpp文件),而把类的具体实现交给其他程序员开发。

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品
手机访问回到顶部