在托管 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++ 中正确使用 ^ [重复]的主要内容,如果未能解决你的问题,请参考以下文章