我目前正在关注快速教程。并且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类型对象的指针。
那么...... ^是什么意思?谷歌并不太友好。
答案 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
调用 - 这意味着它不是一个“正常”的内存分配,而是它从运行时收集的垃圾内存。