对象定义中的^是什么?

时间:2011-12-17 19:37:47

标签: winforms c++-cli

  

可能重复:
  What does the caret mean in C++/CLI?
  In C++/CLR, what does a hat character ^ do?

我在Visual Studio C ++中创建了我的第一个Win表单应用程序,浏览代码时看到了一些我无法理解的内容:

private: System::Windows::Forms::Button^  button1;

此行中^符号的含义是什么?我了解*&,但在对象的定义中从未见过^

4 个答案:

答案 0 :(得分:4)

Have a look here这不仅仅是C ++而是C ++ / CLI

  

在C ++ / CLI中,唯一类型的指针是普通的C ++指针,.NET引用类型通过“句柄”访问,使用新语法ClassName ^而不是ClassName *。当托管和标准C ++代码混合使用时,这个新构造特别有用;它阐明了.NET自动垃圾收集中的哪些对象以及程序员必须记住哪些对象明确销毁。

答案 1 :(得分:2)

它指定一个垃圾收集指针。对于指针,正常的C ++版本为*,C ++ / CLI使用^来区分托管和非托管。它还使用不同的关键字来分配内存。

int* plain_cpp = new int;
delete plain_cpp; // unmanaged

int^ cpp_cli = gcnew int;
// managed, no delete possible

答案 2 :(得分:1)

它相当于C ++ / CLI中的指针(*)。一个关键的区别是它是垃圾收集,因为管理C ++ / CLI。

答案 3 :(得分:0)

^表示它是CLR类型而不是C ++本机类型