Winforms 对象定义中的“^”是什么?

Winforms 对象定义中的“^”是什么?,winforms,c++-cli,Winforms,C++ Cli,可能重复: 我在VisualStudioC++中创建了第一个Win窗体应用程序,浏览代码看到了一些我不能理解的东西: private: System::Windows::Forms::Button^ button1; 这行中的^符号是什么意思?我理解了代码> */>和和,但是在对象定义中从来没有见过“代码> ^ /代码>。 ^,意思是它是CLR类型,而不是C++原生类型< p>它指定了垃圾收集指针。普通C++版本是指针的代码> >代码>,C++/CLI使用代码> >代码>区分托管和非托管

可能重复:

我在VisualStudioC++中创建了第一个Win窗体应用程序,浏览代码看到了一些我不能理解的东西:

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

这行中的
^
符号是什么意思?我理解了代码> */>和<代码>和<代码>,但是在对象定义中从来没有见过“代码> ^ /代码>。

^,意思是它是CLR类型,而不是C++原生类型

< p>它指定了垃圾收集指针。普通C++版本是指针的代码> >代码>,C++/CLI使用代码> >代码>区分托管和非托管。它还使用不同的关键字来分配内存

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

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

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

< P>这不仅仅是C++,而是C++ + CLI/P> <>在C++中,唯一的指针类型是普通C++指针,.NET引用类型通过“句柄”访问,使用新的语法CordNeX代替CordNeX *。这种新的结构在管理和标准C++代码混合时特别有用;它澄清了哪些对象处于.NET自动垃圾收集之下,以及程序员必须记住显式销毁哪些对象


这是一个帽子指针。这是因为Windows窗体应用程序不是C++程序,而是C++ C++/CI(C++,.NET,如果你喜欢)程序,这是两种不同的语言(虽然很相关)。如果您知道这一事实并且确实想使用C++/CLI,那么就可以获得一本关于C++/CLI的好教程/书籍,因为
^
是一个基本概念。如果不是,那么使用C++的其他GUI库。+ 1,唯一的答案是考虑到OP不知道C++和C++/CLI之间的差异。