相关疑难解决方法(0)

pimpl成语如何减少依赖?

考虑以下:

PImpl.hpp

class Impl;

class PImpl
{
    Impl* pimpl;
    PImpl() : pimpl(new Impl) { }
    ~PImpl() { delete pimpl; }
    void DoSomething();
};
Run Code Online (Sandbox Code Playgroud)

PImpl.cpp

#include "PImpl.hpp"
#include "Impl.hpp"

void PImpl::DoSomething() { pimpl->DoSomething(); }
Run Code Online (Sandbox Code Playgroud)

Impl.hpp

class Impl
{
    int data;
public:
    void DoSomething() {}
}
Run Code Online (Sandbox Code Playgroud)

client.cpp

#include "Pimpl.hpp"

int main()
{
    PImpl unitUnderTest;
    unitUnderTest.DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

这种模式背后的想法是,Impl界面可以改变,但客户端不必重新编译.然而,我没有看到这是如何真实的情况.假设我想在这个类中添加一个方法 - 客户端仍然需要重新编译.

基本上,只有种这样的,我可以看到的变化不断需要改变头文件一类的东西,其中的类发生变化的接口.当发生这种情况时,pimpl或没有pimpl,客户端必须重新编译.

这里的哪种编辑在不重新编译客户端代码方面给我们带来了好处?

c++ pimpl-idiom

8
推荐指数
3
解决办法
2213
查看次数

标签 统计

c++ ×1

pimpl-idiom ×1