C ++中的“^”符号是什么?

时间:2010-09-01 20:19:52

标签: .net visual-c++ c++-cli

当我在岩石下睡觉时,有一个新符号加入了C ++语言规范吗?

我刚刚遇到以下问题:

Restrict Text Box to only accept 10 digit number

这表明'^'符号在某种程度上是C ++的一部分(不是按字母XOR的遗留意义)

是这样吗?

如果是这样,这是什么意思? (我尝试google the question,但谷歌没有得到满意的答案)

5 个答案:

答案 0 :(得分:35)

在C ++中,“^”符号是按位异或(xor)运算符。对于一位,您有0 ^ 0 = 1 ^ 1 = 00 ^ 1 = 1 ^ 0 = 1

但是,在您提到的问题中,它是.NET平台上用于C ++开发的Microsoft特殊语法的一部分,称为C ++ / CLI或 It Just Works

.NET上的内存被垃圾收集,并且必须跟踪对对象的引用。这使得无法使用普通的C ++指针引用这些对象。 Microsoft决定重用“^”符号来声明一个类似于可以引用托管堆上的对象的指针的变量。

^ (Handle to Object on Managed Heap)

答案 1 :(得分:14)

在Visual C ++中,^表示托管对象的句柄。基本上C#中的内容是一个参考。使用gcnew而不是new分配它们,它们将被垃圾收集。这就是Visual C ++与CLI交互的方式。

答案 2 :(得分:10)

在引用的答案中,它不是标准C ++语言的一部分,它是Microsoft为C ++ interop拼凑而成的C ++ / CLI语言的一部分。在该语言中,^表示“指向托管内存的指针。”

答案 3 :(得分:4)

'^'语法是指tracking reference中的C++/CLI,它是C ++的Microsoft扩展,可以与托管代码进行交互。

答案 4 :(得分:1)

它不是标准C ++的一部分。它是Managed C ++的一部分(微软的语言很像C ++ for .NET)。它的意思是“对----的引用”,就像“*”表示“指向-----的指针”是标准C ++一样。