“ d”在d指针中代表什么?

Jac*_*ieg 3 c++ qt pimpl-idiom d-pointer qt5

Qt在开发过程中大量使用了PIMPL习惯用法:https//wiki.qt.io/D-Pointer

正如我在这里所读到的:“ d指针”源于Trolltech的Arnt Gulbrandsen,他首先将该技术引入了Qt,使其成为最早的C ++ GUI库之一,即使在更大的发行版之间也保持二进制兼容性。” 。但是没有人说“ D”代表什么。

那么“ D”在D-Pointer中代表什么?

arn*_*rnt 9

我会添加我自己的答案,因为我记得事情发生的那天。

我试图在保持二进制兼容性的同时扩展某些内容,并注意到有一个名为“数据”的指针,我可以将其重用于不同的目的。因此,我为与实现相关的数据创建了一个私有类(pimpl),将旧数据和新数据都放在那里,并且由于现有名称似乎合适,所以我保留了该名称。

在同一天晚些时候的一次简短会议后,我将其从 data 缩写为 d,我们同意我的模式发明了偶然发现是好的,我们应该广泛使用它,并且它d->足够短且足够独特,可以在任何地方用作特定于实现的字段的标记。

在同一次会议上,我们决定从那时起将特定于实现的数据放在 d-> 中作为一项政策,主要是为了减少包含数量,同时也是为了保持声明的 API 总体干净。类声明中的私有变量越少,意味着出错的机会就越少,诱惑也就越少,与子类命名发生冲突的事情也就越少等等。更好的卫生。

  • 当然是关于 Qt 的。这就是术语“d 指针”的来源。其他人也做了类似的事情,但使用了其他名称,主要是“pimpl”。 (3认同)

Ama*_*eus 5

在此页面上,“ 与类共享数据”(来自QT的旧文档)说:

在共享对象的私有数据之前,我们必须使用称为“ d-pointer”(数据指针)的惯用法将其接口与私有数据分开。

因此,d指针表示数据指针