我最近需要研究控制串行端口,因此我转向 .net。我想,因为我使用的是 Visual Studio,这很容易......我错了......
弄清楚“^
”和“gcnew
”的含义后,我偶然发现了“->
”,我仍然找到了它意思是“(*).
”(不知道这是由于我自己的无知)。
问题是这样的:
如果“->
”相当于“(*).
”
而“^
”等价于“*
”
那么为什么“(^).
”在输入时不会编译并弹出自动完成功能?或者我在这里遗漏了什么?
最佳答案
C++/CLI 中的帽子 (^
) 和百分号 (%
) 与星号 ( *
)和 C++ 中的&符号(&
)在类型中。
不过,^
不用作运算符;你仍然使用*
。
(1) 请注意,它们不相同或等价。 ^
和 %
用于垃圾收集堆上对象(即托管对象)的句柄和引用。 *
和 &
用于指向 native C++ 对象的指针和引用(至少在大部分情况下)。
在使用 C++/CLI 编程时,您需要非常小心:永远不要忘记在单个源文件中使用两个完全不同的对象模型。 C++ 中创建和销毁对象的方式以及管理对象生命周期的方式与 .NET 中的工作方式完全不同。
关于.net - 托管对象,为什么不会(^)。编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6514487/