1. 程式人生 > >C++ Pimpl技法 C++介面實現分離原理

C++ Pimpl技法 C++介面實現分離原理

C++Pimpl技法

優點

  1. 將C++的介面和實現分離在兩個類中
  2. C++的實現和介面在不同的檔案中,實現改變不會導致介面檔案重新編譯

將下面的程式碼分開在幾個檔案裡面就實現了Pimpl技法

#include <iostream>

class X;

class C

{

public:

    C();

    virtual ~C();

    void Fun();

private:

    std

::auto_ptr<X> pImpl_; //pimpl

};

 

class X

{

public:

    X()

    {

        printf("new x\n");

    }

    virtual ~X()

    {

        printf

("delete X\n");

    }

    void Fun()

    {

    }

};

C::C():pImpl_(new X)

{

    printf("new C\n");

}

C::~C()

{

    printf("delete C\n");

}

void C::Fun()

{

    pImpl_

->Fun();

}

 

 

int main()

{

    std::auto_ptr<C> c(new C);

    c->Fun();

    return 0;

}