托管对象,为什么不会(^).编译?

Fak*_*ken 2 .net pointers c++-cli visual-studio

我最近需要考虑控制串口,所以我转向.net.我想,既然我正在使用visual studio,这很容易......我错了......

在弄清楚" ^"和" gcnew"之后,我偶然发现了" ->我仍然发现(*)."的意思" "(不知道这是由于我自己的无知).

问题是:

如果" ->"相当于" (*)."而" ^"相当于" *"

那么为什么(^).在键入它时不会" "编译它会导致自动完成?或者我在这里遗漏了什么?

Jam*_*lis 5

C++/CLI中的hat(^)和percent(%)与asterisk()和类型中的C++ 中的&符号()是偶然的(1).*&

但是,^它不是用作运算符的; 你仍然使用*.


(1)注意它们不相同等同. ^%用于处理和引用垃圾收集堆上的对象(即托管对象). *&用于指向和引用本机C++对象(至少在大多数情况下).

在C++/CLI中编程时要非常小心:永远不要忘记在单个源文件中使用了两个完全不同的对象模型.创建和销毁对象的方式以及如何使用C++管理对象生存期与.NET中的工作方式完全不同.