可能重复:
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;
此行中^
符号的含义是什么?我了解*
和&
,但在对象的定义中从未见过^
。
答案 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 ++本机类型