在托管 C++ 中正确使用 ^ [重复]

Posted

技术标签:

【中文标题】在托管 C++ 中正确使用 ^ [重复]【英文标题】:correct usage of ^ in managed C++ [duplicate] 【发布时间】:2018-12-14 11:04:59 【问题描述】:

我目前正在开发一个 C++ 应用程序。我遇到了这个运营商:^

在我的情况下,我猜它 不是 XOR,因为在给定的代码中,用法是这样的:

作为变量声明:

Dictionary<System::String^, List<int>^>^ Tomatoes;

或作为方法返回参数:

Food::Vegetable^ Vegetable_Create(List<KeyValuePair<int, Dictionary<System::String^, float>^>>^ a, List<KeyValuePair<System::String^, Food::Cucumber^>>^ b, Dictionary<System::String^, float>^ c);

我想知道^ 运算符的实际用途。

你知道 ^ 运算符在 C++ 中的用途吗?真的有必要吗?

谢谢!

【问题讨论】:

也可能是***.com/questions/500580/… @Tas 我已投票关闭此(500580)作为this(202463)的副本。请帮助我;) 它代表 CLI 中的托管指针。换句话说,是可憎的。 CLI 的第一个版本保留了*gc_new 系列函数来创建托管对象。为什么他们不喜欢智能指针类而不是摆弄语言,从而冒着与未来 C++ 标准的兼容性中断的风险,这让我无法理解。 【参考方案1】:

C++/CLI 中的^ 运算符表示托管指针。所以int* 是一个指向整数的原始指针,而System::String^ 是一个指向 CLI 字符串的托管指针。

所有 .Net 类都必须通过托管指针或托管引用(我认为是 % 运算符)来处理。所以是的,这是绝对必要的。事实上,它是 C++/CLI 最基本的部分之一。它不是普通 C++ 的一部分。

【讨论】:

以上是关于在托管 C++ 中正确使用 ^ [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中正确使用动态分配的多维数组 [重复]

为啥我必须添加小数才能在 C++ 中正确计算 [重复]

这是正确使用new和delete - c ++ [重复]

从 C++ 中的排序数组中删除重复项

C ++中的向量加法并不完全正确[重复]

是否有任何情况下有效的 C 代码无法使用 g++ 正确编译 [重复]