9

Qt 在其开发过程中大量使用 PIMPL 成语:https ://wiki.qt.io/D-Pointer

正如我在这里所读到的:“'d-pointer' 这个名字源于奇趣科技的 Arnt Gulbrandsen,他首先将该技术引入 Qt,使其成为第一个即使在更大版本之间也能保持二进制兼容性的 C++ GUI 库之一。” . 但是没有人说“D”代表什么。

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

4

2 回答 2

11

在此页面Data Sharing with Class(来自 QT 的旧文档)中,它说:

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

所以,d-pointer 表示数据指针

于 2019-10-23T10:19:34.787 回答
5

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

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

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

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

于 2021-05-30T11:28:58.623 回答