有什么方法可以理解_Ux,_Dx,_Dt的含义吗?这些助记符告诉我关于参数的信息。
答案 0 :(得分:2)
这些“助记符”就像你所说的那样只不过是Visual Studio IntelliSense生成的一个提示,用于 在编写代码时帮助你 (语法)而不是意义(语义)。
如果您需要更多信息来帮助您了解API及其正确用法,请参阅文档。在这种情况下,它可能是the reference for std::shared_ptr
's constructor
答案 1 :(得分:2)
这个“奇怪的名字”事物(至少部分地)与reserved identifiers有关。程序员(你,我)是不允许定义像_Ux
这样的名称,以下划线后跟大写字母开头(也不是__x
或{{1}这样的名字在他的源代码中包含相邻下划线的 where 。因此,C ++实现(标准库详细信息,编译器内部......)可以使用此保留的“名称空间”,而不必担心名称冲突与用户代码。
这是双赢的:实现永远不会定义a__b
或fooBar
等名称(预留FOO_BAR
等关键字和int
等公共名称,{{1或std
),因此您可以安全地在代码中使用这些名称,相反,您永远不应该定义printf
,CHAR_BIT
或_FooBar
等名称,以便您不会搞砸实现(对于宏来说尤其如此)。
至于他们使用__foo_bar
而不是{1}}的原因。 FOO__BAR
(也是_Ux * _Px, _Dx _Dt
而非_U * __p, _Deleter __d
),嗯,我想这只是他们的内部命名约定。