某些使用按位运算符不清楚

时间:2012-08-19 10:22:01

标签: c++-cli clr

为什么在声明这个

时变量名之前的按位运算符
Ping ^pingSender = gcnew Ping;

由于

2 个答案:

答案 0 :(得分:1)

你在谈论这段代码吗?

Ping ^ pingSender = gcnew Ping;

// When the PingCompleted event is raised, 
// the PingCompletedCallback method is called.
pingSender->PingCompleted += gcnew PingCompletedEventHandler( PingCompletedCallback );

这里暗示将从System.Net.NetworkInformation :: Ping创建ping类的实例。简单来说,这不是XOR操作,而是在C ++ for .NET的Microsoft实现中声明托管类型对象的语法。

答案 1 :(得分:0)

在这种情况下,^不是按位异或;它声明pingSender是对托管类型(.NET本机类型)Ping的引用。

我假设您熟悉C#和常规,非托管C ++的基础知识。

这行代码等于

Ping pingSender = new Ping();

在C#中,如果Ping是非托管C ++类,

Ping* pingSender = new Ping;

在C ++中。如您所见,^在声明中使用时具有另一种含义,就像*对C / C ++中的非托管类型所做的那样。