0

视觉工作室编辑

有什么办法可以理解这里的_Ux、_Dx、_Dt的含义吗?这个助记符没有告诉我有关参数的任何信息。

4

2 回答 2

2

这个“奇怪的名字”(至少部分)与保留标识符有关。程序员(你,我)不允许在其源代码的任何地方定义_Ux以下划线后跟大写字母的名称(也不允许类似__xa__b包含相邻下划线的名称) 。C++ 实现(标准库细节、编译器内部......)因此可以使用这个保留的“名称空间”,而不必担心名称与用户代码冲突。

这是双赢的:实现永远不会定义像fooBaror之类的名称FOO_BAR(保留关键字 likeint和公共名称 like std, printfor CHAR_BIT),因此您可以在代码中安全地使用这些名称,相反,您永远不应该定义像_FooBar, __foo_baror之类的名称FOO__BAR,所以你不会弄乱实现(对于宏来说尤其如此)。

至于他们为什么使用_Ux * _Px, _Dx _Dt而不是 eg _U * __p, _Deleter __d(also_Ty和 not _T),好吧,我猜这只是他们内部的命名约定。

于 2013-09-04T09:12:58.113 回答
2

正如您所说的这些“助记符”只不过是 Visual Studio 的IntelliSense生成的提示,旨在帮助您编写代码(语法)而不是含义(语义)。

如果您需要更多信息来帮助您了解 API 及其正确用法,您应该查阅文档。在这种情况下,它可能是的构造函数的引用std::shared_ptr

于 2013-09-04T08:46:45.110 回答