当我在岩石下睡觉时,有一个新符号加入了C ++语言规范吗?
我刚刚遇到以下问题:
Restrict Text Box to only accept 10 digit number
这表明'^'符号在某种程度上是C ++的一部分(不是按字母XOR的遗留意义)
是这样吗?
如果是这样,这是什么意思? (我尝试google the question,但谷歌没有得到满意的答案)
答案 0 :(得分:35)
在C ++中,“^”符号是按位异或(xor)运算符。对于一位,您有0 ^ 0 = 1 ^ 1 = 0
和0 ^ 1 = 1 ^ 0 = 1
。
但是,在您提到的问题中,它是.NET平台上用于C ++开发的Microsoft特殊语法的一部分,称为C ++ / CLI或 It Just Works 。
.NET上的内存被垃圾收集,并且必须跟踪对对象的引用。这使得无法使用普通的C ++指针引用这些对象。 Microsoft决定重用“^”符号来声明一个类似于可以引用托管堆上的对象的指针的变量。
答案 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 ++一样。