C++中的“^”符号是啥?
Posted
技术标签:
【中文标题】C++中的“^”符号是啥?【英文标题】:What is the "^" symbol in C++?C++中的“^”符号是什么? 【发布时间】:2010-09-01 20:19:51 【问题描述】:当我睡在岩石下时,是否有新符号加入了 C++ 语言规范?
我刚刚遇到以下问题:
Restrict Text Box to only accept 10 digit number
这表明 '^' 符号在某种程度上是 C++ 的一部分(不是按位异或的传统含义)
是这样吗?
如果是这样,那是什么意思? (我尝试google the question,但谷歌没有给出满意的答案)
【问题讨论】:
如果您喜欢^
,您会喜欢他们还将 &
替换为 %
以引用托管类型。就像他们刚刚决定搞砸一样,让我们发明新的运算符,仍然称语言为“C++”。
@Ken Simon:C++ 从什么时候开始有了托管类型? C# 有托管类型,但没有标准 C++。
@Ken:这种语言不叫 C++,它叫 C++/CLI。如此调用它的一个原因可能是纯 C++ 是 C++/CLI 的完整子集(即,任何符合 C++ 的程序也是符合 C++/CLI 的程序)。
【参考方案1】:
在 C++ 中,“^”符号是按位异或 (xor) 运算符。对于单个位,您有 0 ^ 0 = 1 ^ 1 = 0
和 0 ^ 1 = 1 ^ 0 = 1
。
但是,在您提到的问题中,它是 Microsoft 在 .NET 平台上进行 C++ 开发的特殊语法的一部分,称为 C++/CLI 或 It Just Works。
.NET 上的内存被垃圾回收,并且必须跟踪对对象的引用。这使得使用普通 C++ 指针无法引用这些对象。 Microsoft 决定重用“^”符号来声明一个类似于指针的变量,该指针可以引用托管堆上的对象。
^ (Handle to Object on Managed Heap)
【讨论】:
【参考方案2】:在 Visual C++ 中,^
表示托管对象的句柄。本质上,C# 中的内容将是一个参考。使用gcnew
而不是new
分配它们,它们将为您进行垃圾收集。这就是 Visual C++ 与 CLI 交互的方式。
【讨论】:
【参考方案3】:在引用的答案中,它不是标准 C++ 语言的一部分,它是 Microsoft 为 .NET 互操作拼凑而成的 C++/CLI 语言的一部分。在该语言中,^ 表示“指向托管内存的指针”。
【讨论】:
【参考方案4】:'^' 语法指的是 C++/CLI 中的 tracking reference,这是一个 Microsoft 对 C++ 的扩展,可以与托管代码进行交互。
【讨论】:
不,不是。%
是跟踪参考。 ^
是一个跟踪句柄。 (阅读您链接到的页面。)【参考方案5】:
它不是标准 C++ 的一部分。它是托管 C++(Microsoft 的语言很像 C++ for .NET)的一部分。它表示“对----的引用”,就像“*”表示“指向-----的指针”是标准C++一样。
【讨论】:
它是标准 C++ 的一部分,其中它是按位异或运算符。 是的,“*”也表示“乘”,但这不是我们这里要讨论的。 双号^
是一个跟踪句柄,用于 ---- 引用在 C++ 中意味着其他东西,%
是标准 C++ 引用 &
的托管等效项。这是在 C++/CLI 中。在已失效的“Managed Extensions for C++”中,它被写成__gc *
,意思是垃圾收集器兼容指针。以上是关于C++中的“^”符号是啥?的主要内容,如果未能解决你的问题,请参考以下文章