编译时封装(现代C++) Pimpl
pimpl 惯例 是隐藏实现,最小化耦合和分隔接口的一个现代 C++ 技术。 Pimpl 为“实现的指针较短”。您可能已经熟悉此概念,但由与彻斯特猫或编译器防火墙固有的其他名称识别它。
为什么使用 pimpl?
这是 pimpl 个可以如何提高软件开发在段:
生成依赖项的低估。
接口和实现的分离。
可移植性。
Pimpl 标头
// my_class.h
class my_class {
// ... all public and protected stuff goes here ...
private:
class impl; unique_ptr<impl> pimpl; // opaque type here
};
pimpl 个避免重新生成级联和脆弱的对象布局。 它 (管道) 的常见类型是非常适合的。
Pimpl 实现
定义在 .cpp 文件中 impl 选件类。
// my_class.cpp
class my_class::impl { // defined privately here
// ... all private data and functions: all of these
// can now change without recompiling callers ...
};
my_class::my_class(): pimpl( new impl )
{
// ... set impl values ...
}
最佳实践
是否考虑将为非引发支持交换专用化。