【问题标题】:How the operator ^ is used in C++ [duplicate]如何在 C++ 中使用运算符 ^ [重复]
【发布时间】:2012-11-05 04:53:20
【问题描述】:

我理解在 C 中,运算符 ^ 用于按位异或。在其中一个 C++ 代码中,我看到了使用此运算符的以下行:

 using namespace System::Threading;
 public ref class Expert : public System::Windows::Forms::Form
{
    int i ;
        float a ;


public:
    int count;
    Thread^ th;

     }

这里的^是什么意思?

【问题讨论】:

  • 那不是 C++,它是 C++/CLI,它是 C++ 的 Microsoft 扩展。
  • 这意味着代码不是C++,而是微软的一种类似的语言。 (我忘记了语言的名称,但里面有 C++。)
  • 在 C++ 中(如在 C 中),它是按位异或 (XOR) 运算符。在您的问题的上下文中,它是完全不同的东西,而不是 C++。

标签: c++ c++-cli


【解决方案1】:

这不是 C++,它是 C++ 的变体,名为 C++/CLI,是 Microsoft 扩展,用于在 C++ 中创建托管 .NET 应用程序。

^ 这样使用时确实表示托管指针,即可以被垃圾回收的内存。

【讨论】:

  • 只是为了澄清我问:我需要使用 free() 来释放这样的内存吗?
  • @gpuguy 不,它只能用gcnew 分配,并且会自动释放。这就像在 C# 中创建新对象。
【解决方案2】:

这是一个 .net 引用类型,在 C++/CLI!也就是说,Expert::th 是对System.Threading.Thread(或null)实例的引用。您还可以通过它继承自 .net 类的事实来判断它是 C++/CLI。

【讨论】:

    【解决方案3】:

    那不是 C++,那是 C++/CLI。 ^ 代表“句柄”,类似于托管指针。

    【讨论】:

      【解决方案4】:

      您还将在 C++/CX 中看到 ^(“帽子”)符号,它是带有一组扩展的 C++,有助于支持 Windows 8 (WinRT) 开发。

      http://en.wikipedia.org/wiki/C%2B%2B/CX

      http://en.wikipedia.org/wiki/WinRT#C.2B.2B_.28WRL.2C_Component_Extensions.29

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-30
        • 1970-01-01
        • 2020-02-21
        • 2018-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多