“ = gcnew MyClass()”和“ =%MyClass()”有什么区别?

时间:2019-08-17 20:29:43

标签: c++-cli

两者之间有什么区别

MyClass ^myClass = gcnew MyClass();

MyClass ^myClass = %MyClass();

如果有的话?

两者似乎都可以,但是不确定幕后发生的事情。

1 个答案:

答案 0 :(得分:0)

修订版:

Stack Semantics


上一个
因此,在两种情况下,都将新创建的对象的地址分配给指针。因此,这两个语句似乎工作相同。

差异:
使用shader.comp分配具有垃圾回收的托管类型(引用)的内存。

使用gcnew与使用%MyClass()类似,后者没有垃圾收集。

gcnew:
托管类型(引用或值类型)的内存由gcnew分配,并使用垃圾回收释放。

%MyClass():
与标准C ++一样,该对象将不会被垃圾回收。运算符重载的工作方式类似于标准C ++。每个*变成^,每个&变成%。

“ ^”的含义:
句柄声明符(^,发音为“ hat”)修改类型说明符,以表示当系统确定该对象不再可访问时,应自动删除已声明的对象。

相关链接:
Meaning of '%', Search "Operator Overloading"
Meaning of gcnew
Meaning of '^'