当搞乱STL和提升时,我一直看到名为“detail”或“impl”的文件夹。 这些文件夹的目的是什么?你怎么知道这里有什么?
这些只是接口的私有实现吗?
答案 0 :(得分:7)
这些文件夹的用途是什么?
这些只是接口的私有实现吗?
基本上,是的。它的标准库的Boost和实现通常放置的东西不是它们公开的公共接口的一部分,但需要公共接口的实现才能访问。
你怎么知道这里有什么?
这是一个难以回答的问题,因为它意味着你可以从外面看到,可以得出这些目录中的东西应该在哪里。您应该将这些目录视为"内部没有用户可维修部件的模拟。"您可以查看并查看,但您永远不知道您可能会发现什么,甚至可以在Boost版本或C ++环境之间进行更改。
强烈建议不要在您的应用程序中直接使用这些目录中的头文件,这将导致不可移植的代码,即使对Boost或C ++编译器进行少量升级也会破坏。
话虽如此,没有理由你无法在这些目录中探索,看看这些内容是如何工作的!
答案 1 :(得分:1)
详细信息文件夹是一种抽象技术,用于将模块公共API中不包含的成员移动到子命名空间和子文件夹中,以隐藏开发人员可能不关心的成员,用于实现私有实现(pimpl)设计模式;一种增强头Herb Sutter发明的模式。 pimpl模式使用共享对象模型来创建跨平台的pimpl,这些pimpl使用.ipp文件在boost中实现(即impl),并且前向声明大大减慢了编译器的速度。 Piml主要用于处理依赖于系统时钟,定时器,锁,线程,图形,音频或自定义硬件等硬件和操作系统相关的设备。
详细信息文件夹和命名空间应该增加它们使API更清洁和更模块化的好处,但是有更清晰,更简单,更优雅,符合UML的解决方案,并且PIMPL设计模式存在许多问题不是工程最佳实践。其中一些原因是:
有关不应使用详细信息文件夹的详细说明,请Kabuki Toolkit Application Framework。