C++/CLI:“ Button^ button1; ”这里的 ^ 是什么意思?
C++/CLI: " Button^ button1; " what is ^ meaning here?
我在 C++/CLI 中创建了一个带有一个按钮和 onClick 事件的 WindowsForm class。我查看了源代码并看到了这个:
public ref class MyForm : public System::Windows::Forms::Form
{
public:
MyForm(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~MyForm()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Button^ button1;
...
private: System::Void onClickButton1(System::Object^ sender, System::EventArgs^ e) {
}
}
请问:class中声明按钮(Button^ button1;
)时,^
运算符是什么意思?
^
是 Handle to Object operator:
The handle declarator (^, pronounced "hat"), modifies the type specifier to mean that the declared object should be automatically deleted when the system determines that the object is no longer accessible.
因此 Button^
声明了一个指向垃圾收集的 Button
对象的指针,该对象是使用 gcnew
而不是 new
:
分配的
The ref new aggregate keyword allocates an instance of a type that is garbage collected when the object becomes inaccessible, and that returns a handle (^) to the allocated object.
使用句柄声明符 ^
声明的变量的行为类似于指向对象的指针。您可以使用 ->
访问该对象的成员。
CLR 垃圾收集器机制决定对象是否不再被使用,是否可以删除,这意味着资源管理变得更容易。与 C++ 中的原始指针不同,当您使用完它们时需要 delete
。
我在 C++/CLI 中创建了一个带有一个按钮和 onClick 事件的 WindowsForm class。我查看了源代码并看到了这个:
public ref class MyForm : public System::Windows::Forms::Form
{
public:
MyForm(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~MyForm()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Button^ button1;
...
private: System::Void onClickButton1(System::Object^ sender, System::EventArgs^ e) {
}
}
请问:class中声明按钮(Button^ button1;
)时,^
运算符是什么意思?
^
是 Handle to Object operator:
The handle declarator (^, pronounced "hat"), modifies the type specifier to mean that the declared object should be automatically deleted when the system determines that the object is no longer accessible.
因此 Button^
声明了一个指向垃圾收集的 Button
对象的指针,该对象是使用 gcnew
而不是 new
:
The ref new aggregate keyword allocates an instance of a type that is garbage collected when the object becomes inaccessible, and that returns a handle (^) to the allocated object.
使用句柄声明符 ^
声明的变量的行为类似于指向对象的指针。您可以使用 ->
访问该对象的成员。
CLR 垃圾收集器机制决定对象是否不再被使用,是否可以删除,这意味着资源管理变得更容易。与 C++ 中的原始指针不同,当您使用完它们时需要 delete
。