Visual c++ 在C++/CLI,帽子字符^1的作用是什么? 我正在阅读Ivor Horton的开始Visual C++ 2008,并且它的许多CLR例子都有这个定义: int main(array<System::String ^> ^args) int main(数组^args)

Visual c++ 在C++/CLI,帽子字符^1的作用是什么? 我正在阅读Ivor Horton的开始Visual C++ 2008,并且它的许多CLR例子都有这个定义: int main(array<System::String ^> ^args) int main(数组^args),visual-c++,c++-cli,clr,Visual C++,C++ Cli,Clr,我一页一页地回到书的开头,找到了第一个这样的例子,解释了它的真正含义,但没有找到 显然,它的意思与标准的intmain(intargc,char*argv[])相同,但我想知道^何时被真正使用,为什么被使用,以及它为什么存在(它是否做了指针*和引用&无法表示的事情)?请参阅下面的完整讨论: 托管服务器上对象的句柄 heap指向“整个”对象,并且 不是对象的成员 它是托管指针-虽然*标记指向非托管对象的指针,^指向垃圾收集对象(由框架处理)。有关.NET中指针处理方式的详细信息,请阅读。更进一步,

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


显然,它的意思与标准的
intmain(intargc,char*argv[])
相同,但我想知道
^
何时被真正使用,为什么被使用,以及它为什么存在(它是否做了指针
*
和引用
&
无法表示的事情)?

请参阅下面的完整讨论:

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


它是托管指针-虽然*标记指向非托管对象的指针,^指向垃圾收集对象(由框架处理)。有关.NET中指针处理方式的详细信息,请阅读。

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

NativeObject* n = new NativeObject();
ManagedObject^ m = gcnew ManagedObject();
托管对象和本机对象是两种完全不同的东西,您不能将它们混合在一起(嗯,不容易)