在C++/CLI中,符号^有什么作用?

45

我正在阅读Ivor Horton的《Visual C++ 2008入门教程》,其中很多CLR示例都有这个main函数定义:

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

我回到书的开头,一遍遍地翻页,想找到第一个使用这种形式的例子,并解释它的真正含义,但是没有找到。

显然,它的含义与标准的 int main(int argc, char *argv[]) 相同,但我想知道什么时候和为什么会真正使用那个 ^,以及它为什么存在(它是否有什么指针 * 和引用 & 无法表示的功能)?

3个回答

45

这是一个托管指针 - 当 * 标记一个未经管理的对象的指针时,^ 指向一个由框架处理的垃圾回收对象。请参阅 此文 以了解在 .NET 中如何处理指针。


不知道这是否只适用于Microsoft C++。找不到任何说明它是还是不是的东西。 - Alberto

20

补充一点,在 C++/CLI 中,托管指针与普通指针是分开处理的,因此甚至需要使用不同的关键字进行分配:

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

托管对象和本机对象是两个完全不同的东西,你不能轻易地将它们混合使用。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接