【问题标题】:In C++/CLI, what does the hat character ^ do? [duplicate]在 C++/CLI 中,帽子字符 ^ 有什么作用? [复制]
【发布时间】:2010-10-04 18:36:06
【问题描述】:

我正在阅读 Ivor Horton 的《Beginning Visual C++ 2008》,它的许多 CLR 示例都对 main 进行了以下定义:

int main(array<System::String ^> ^args)

我一页一页地回到书的开头,找到第一个这样的例子,并解释了它的真正含义,但找不到。

显然它与标准int main(int argc, char *argv[]) 的含义相同,但我想知道^ 何时以及为什么真正被使用,以及它为什么存在(它是否做了一些指向* 和引用的事情&amp;不能代表)?

【问题讨论】:

    标签: visual-c++ c++-cli clr


    【解决方案1】:

    这是一个托管指针 - 而 * 标记指向非托管对象的指针, ^ 指向垃圾收集对象(由框架处理)。阅读this,了解有关 .NET 中指针处理方式的更多信息。

    【讨论】:

      【解决方案2】:

      此外,在 C++/CLI 中,托管指针与普通指针是分开处理的,因此您甚至可以使用不同的关键字来分配它们:

      NativeObject* n = new NativeObject();
      ManagedObject^ m = gcnew ManagedObject();
      

      托管对象和原生对象是两个完全不同的东西,您不能混合使用它们(嗯,不容易)。

      【讨论】:

        【解决方案3】:

        完整讨论请参见:http://msdn.microsoft.com/de-de/library/yk97tc08.aspx:

        托管对象的句柄 heap 指向“整个”对象,并且 不是对象的成员。

        【讨论】:

          猜你喜欢
          • 2011-07-08
          • 2019-08-04
          • 2011-05-19
          • 1970-01-01
          • 1970-01-01
          • 2011-05-26
          • 2011-04-18
          • 1970-01-01
          相关资源
          最近更新 更多