在声明或定义成员时,“^”符号是什么?

时间:2013-04-30 10:19:54

标签: c++-cli

我目前正在关注快速教程。并且XOR" ^"符号出现在我以前从未见过的地方。如果我声明指向对象的指针,那么星号的确在哪里。  请在下面的代码段中查看。

COpenGL(System::Windows::Forms::Form ^ parentForm, 
            GLsizei iWidth, GLsizei iHeight)
    {
        CreateParams^ cp = gcnew CreateParams;

        // Set the position on the form
        cp->X = 100;
        cp->Y = 100;
        cp->Height = iWidth;
        cp->Width = iHeight;

之后,对象cp被解除引用,就好像它是指向CreateParams类型对象的指针。

那么...... ^是什么意思?谷歌并不太友好。

2 个答案:

答案 0 :(得分:3)

C ++ / CLI是一种与C ++不同的语言。它有点像C ++的扩展。关键的新功能是垃圾收集的CLI对象。类型T ^表示此类对象的跟踪指针,该对象是使用新关键字gcnew创建的。同样,T %表示跟踪的参考

事实上,类型系统有一个全新的部分,其概念是“托管类”(指定为ref class / ref struct),它们具有析构函数终结者。事实上,我曾经对此感到困惑,我asked a question就此而言。

优秀的读物是Herb Sutter的design rationale for C++/CLI

答案 1 :(得分:2)

^是Microsoft C ++扩展的一部分,即C ++ / CLI或C ++ / CX。 Microsoft引入它来表示垃圾收集指针,用于.NET或WinRT。你看到gcnew调用 - 这意味着它不是一个“正常”的内存分配,而是它从运行时收集的垃圾内存。