在C ++ / CLI中,帽子angular色^做什么?

我正在阅读Ivor Horton的“开始Visual C ++ 2008”,其许多CLR示例都有这样的定义:

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

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

显然,它意味着与标准int main(int argc, char *argv[]) ,但我想知道何时以及为什么^真正被使用,为什么它甚至存在(它是否做了指针*和引用&不能代表)?

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

只需要补充一点,在C ++ / CLI中,托pipe指针与普通指针分开处理,所以你甚至可以用不同的关键字来分配它们:

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

托pipe和本地对象是两个完全不同的东西,你不能混合(好,不容易)。

看到这个完整的讨论: http : //msdn.microsoft.com/de-de/library/yk97tc08.aspx :

托pipe堆上的对象的句柄指向“整个”对象,而不指向对象的成员。