“= gcnew MyClass()”和“= %MyClass()”有什么区别?
What is the difference between "= gcnew MyClass()" and "= %MyClass()"?
有什么区别
MyClass ^myClass = gcnew MyClass();
和
MyClass ^myClass = %MyClass();
如果有的话?
两者似乎都有效,但不确定幕后发生了什么。
修订:
上一个:
因此,在这两种情况下,新创建的对象的地址都分配给了一个指针。出于这个原因,这两个语句似乎工作相同。
区别:
使用 gcnew
分配具有垃圾收集的托管类型(引用)的内存。
使用 %MyClass()
类似于使用 &MyClass()
,它没有垃圾回收。
gcnew:
托管类型(引用或值类型)的内存由 gcnew 分配,并使用垃圾回收释放。
%MyClass():
与标准 C++ 一样,此对象不会被垃圾回收。运算符重载的工作方式类似于标准 C++。每个 * 都变成一个 ^,每个 & 都变成一个 %.
'^'的含义:
句柄声明符(^,读作"hat"),修饰类型说明符,表示当系统确定对象不再可访问时,应自动删除声明的对象。
相关链接:
Meaning of '%'
, Search "Operator Overloading"
Meaning of gcnew
Meaning of '^'
有什么区别
MyClass ^myClass = gcnew MyClass();
和
MyClass ^myClass = %MyClass();
如果有的话?
两者似乎都有效,但不确定幕后发生了什么。
修订:
上一个:
因此,在这两种情况下,新创建的对象的地址都分配给了一个指针。出于这个原因,这两个语句似乎工作相同。
区别:
使用 gcnew
分配具有垃圾收集的托管类型(引用)的内存。
使用 %MyClass()
类似于使用 &MyClass()
,它没有垃圾回收。
gcnew:
托管类型(引用或值类型)的内存由 gcnew 分配,并使用垃圾回收释放。
%MyClass():
与标准 C++ 一样,此对象不会被垃圾回收。运算符重载的工作方式类似于标准 C++。每个 * 都变成一个 ^,每个 & 都变成一个 %.
'^'的含义:
句柄声明符(^,读作"hat"),修饰类型说明符,表示当系统确定对象不再可访问时,应自动删除声明的对象。
相关链接:
Meaning of '%'
, Search "Operator Overloading"
Meaning of gcnew
Meaning of '^'