我使用一个按钮和onClick事件在C ++ / CLI中创建了一个WindowsForm类。我查看了源代码并看到了这个:
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) {
}
}
我想问一下:在类中声明按钮(^
)时Button^ button1;
运算符的含义是什么?
答案 0 :(得分:1)
使用句柄声明符^
声明的变量的行为类似于指向对象的指针。您可以使用->
来访问该对象的成员。
CLR垃圾收集器机制确定是否不再使用该对象并且可以将其删除,这意味着资源管理变得更容易。与C ++中的原始指针不同,当您使用它们时需要delete
。
答案 1 :(得分:0)
句柄声明符(^,发音为“hat”)修改了类型说明符,表示当系统确定该对象不再可访问时,应自动删除声明的对象。
因此Button^
声明指向垃圾收集的Button
对象的指针,该对象使用gcnew
而不是new
分配:
ref new aggregate关键字分配一个类型的实例,该类型在对象变得不可访问时被垃圾收集,并返回一个句柄(^)到分配的对象。