C++中接口與實(shí)現(xiàn)分離的技術(shù)

字號:

在用C++寫要導(dǎo)出類的庫時(shí),我們經(jīng)常只想暴露接口,而隱藏類的實(shí)現(xiàn)細(xì)節(jié)。也就是說我們提供的頭文件里只提供要暴露的公共成員函數(shù)的聲明,類的其他所有信息都不會在這個(gè)頭文件里面顯示出來。這個(gè)時(shí)候就要用到接口與實(shí)現(xiàn)分離的技術(shù)。
    下面用一個(gè)最簡單的例子來說明。
     類ClxExp是我們要導(dǎo)出的類,其中有一個(gè)私有成員變量是ClxTest類的對象,各個(gè)文件內(nèi)容如下:
     lxTest.h文件內(nèi)容:  
    class ClxTest
    {
    public:
     ClxTest();
     virtual ~ClxTest();  
     void DoSomething();
    };  
     lxTest.cpp文件內(nèi)容:  
    #include "lxTest.h"  
    #include
    using namespace std;  
    ClxTest::ClxTest()
    {
    }  
    ClxTest::~ClxTest()
    {
    }  
    void ClxTest::DoSomething()
    {
     cout << "Do something in class ClxTest!" << endl;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  
    lxExp.h文件內(nèi)容:  
    #include "lxTest.h"  
    class ClxExp  
    {
    public:
     ClxExp();
     virtual ~ClxExp();  
     void DoSomething();  
    private:
     ClxTest m_lxTest;  
     void lxTest();
    }; 
    lxExp.cpp文件內(nèi)容:  
    #include "lxExp.h"  
    ClxExp::ClxExp()
    {
    }  
    ClxExp::~ClxExp()
    {
    }  
    // 其實(shí)該方法在這里并沒有必要,我這樣只是為了說明調(diào)用關(guān)系
    void ClxExp::lxTest()
    {
     m_lxTest.DoSomething();
    }  
    void ClxExp::DoSomething()
    {
     lxTest();
    }