1

我目前正在学习快速教程。异或“^”符号出现在我以前从未见过的地方。如果我声明一个指向对象的指针,星号的确切位置。在下面的代码片段中查看它。

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 类型的对象的指针。

所以.... ^ 是什么意思?谷歌一直不太友好。

4

2 回答 2

3

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

事实上,类型系统有一个全新的部分,带有“托管类”(指定ref class/ ref struct)的概念,它具有析构函数终结器。事实上,我曾经对此感到非常困惑,以至于我问了一个问题

Herb Sutter 的C++/CLI 设计原理是一本优秀的读物。

于 2013-04-30T10:22:30.253 回答
2

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

于 2013-04-30T10:23:06.390 回答