close

// Man.hpp
class Man
{
private:
    class Impl;
    Impl *const m;

public:
    Man();
    ~Man();

public:
    void setAge(const int age);
};


// Man.cpp

#include <Man.hpp>

struct Man::Impl
{
    Impl()
    {
        age  = 20;
    }

    int age;
};

Man::Man()
:m( new Impl() )
{}

Man::~Man()
{
    delete m;
}

void Man::setAge(const int age)
{
    m->age = age;
}

 

問: 有什麼好處?

答:

變更類別的成員變數時,只需要重新編譯Man.cpp檔並且連結即可

所有相依於Man.hpp檔的模組都無須重新編譯

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 gaussian1998 的頭像
    gaussian1998

    sean huang的部落格

    gaussian1998 發表在 痞客邦 留言(0) 人氣()