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

时间:2019-10-23 10:02:22

标签: c++ qt qt5 pimpl-idiom d-pointer

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

我读过here”“ d-pointer”的名称来自奇趣科技公司的Arnt Gulbrandsen,他首先将该技术引入Qt,使其成为最早维护的C ++ GUI库之一甚至更大版本之间也具有二进制兼容性。” 。但是没有人说“ D”代表什么。

那么D指针中的“ D”代表什么?

2 个答案:

答案 0 :(得分:6)

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

  

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

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

答案 1 :(得分:2)

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

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

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

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