在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堆上的对象的句柄指向“整个”对象,而不指向对象的成员。