【问题标题】:Meaning of ^ variables in C++/CXC++/CX 中 ^ 变量的含义
【发布时间】:2012-10-28 12:17:34
【问题描述】:

在多年不支持 C# 之后,我刚刚回到 C++ 为 Windows 8/RT 的游戏相关项目。

使用生成的 Game Project Skeleton 我偶然发现了如下所示的方法签名。谁能告诉我 ^ 应该做什么?

Concurrency::task<Platform::Array<byte>^> ReadDataAsync(Platform::String^ filename)

【问题讨论】:

  • 那是 C++/CX。这是一个 WinRT 句柄。
  • @R.MartinhoFernandes 谢谢。将您的评论迁移到答案,我会将其标记为已解决。
  • @Alex, billz:不,它不是重复的。 C++/CX 与 C++/CLI 不同,即使它们共享句法元素。请不要被语法所迷惑。奥利弗:我不确定我是否得到了确切的术语,或者关于它的确切作用的所有细节,所以我只是删除了一条评论,所以你有一些你可以用谷歌搜索的东西。我会为真正知道的人写一个正确的答案。

标签: c++ windows-runtime c++-cx


【解决方案1】:

在 C++/CX 中,T^T 对象的句柄。它实际上是一个智能指针,拥有对指向对象的引用,编译器提供了一些额外的额外功能。

您可以在文章中找到所有关于帽子的信息,"Types That Wear Hats."

【讨论】:

    【解决方案2】:

    显然它被称为对象句柄操作符。

    对象句柄操作符 ^ 被称为“帽子”,本质上是一个 C++ 智能指针。当最后一个帽子超出范围或显式设置为 nullptr 时,它指向的内存将自动销毁。

    根据:https://msdn.microsoft.com/en-us/library/hh699870.aspx。 (来自该页面的“内存管理”部分。

    【讨论】:

      【解决方案3】:

      ^ 符号是对象的句柄。

      例如,String^ s; 声明了一个“字符串”对象的句柄。

      http://en.wikipedia.org/wiki/C%2B%2B/CLI#Handles

      【讨论】:

      • 还有一个指向 C++/CLI - Nrgh 的链接。它是 C++/CX,这是一种完全不同的语言。不要被这个问题的错误结束原因所迷惑。
      • 我现在很着迷,为什么这值得如此多的反对,却没有任何解释。插入符号在 /CLI 和 /CX 中的含义相同,不是吗?
      • @Rook:是吗? (AFAIK 在一种语言中表示“托管 CLR 句柄”,在另一种语言中表示“引用计数的 WinRT 句柄”;这些对我来说听起来不同)。如果它的意思相同把它放在答案中。 (这个不这样做。)
      • @R.MartinhoFernandes 谢谢你的澄清。如果答案不正确,那么在没有解释错误原因的情况下简单地投反对票是非常无益的,你不是说吗?
      • @Rook 抱歉,不记得已经有没有 cmets 的投票了。他们可能依靠 cmets 来解释这个问题。但你是对的,他们本可以给出一个理由,尤其是当它这么直截了当的时候。
      猜你喜欢
      • 2013-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      • 2014-08-31
      • 2015-04-29
      相关资源
      最近更新 更多