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 = 00 ^ 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++中的“^”符号是啥?的主要内容,如果未能解决你的问题,请参考以下文章

字符串文字中的符号 \0 是啥意思?

这个符号在 C++ 中是啥意思? [复制]

节点配置文件中的 ___mac_get_pid 符号是啥?

节点配置文件中的 ___mac_get_pid 符号是啥?

在C++中,"UINT" 是啥类型?

nm 命令中的“符号值”是啥意思?