c++-cli - “= gcnew MyClass()”和“= %MyClass()”有什么区别?
问题描述
和有什么区别
MyClass ^myClass = gcnew MyClass();
和
MyClass ^myClass = %MyClass();
如果有的话?
两者似乎都有效,但不确定幕后发生了什么。
解决方案
修订:
上一篇:
因此,在这两种情况下,新创建的对象的地址都分配给了一个指针。出于这个原因,这两个语句似乎工作相同。
区别:
使用gcnew
分配具有垃圾收集的托管类型(引用)的内存。
using%MyClass()
类似于 using &MyClass()
,后者没有垃圾收集。
gcnew:
托管类型(引用或值类型)的内存由 gcnew 分配,并通过垃圾回收释放。
%MyClass():
与标准 C++ 一样,此对象不会被垃圾回收。运算符重载的工作方式类似于标准 C++。每个 * 变成一个 ^,每个 & 变成一个 %。
'^' 的含义:
句柄声明符(^,发音为“帽子”),修改类型说明符,表示当系统确定对象不再可访问时,应自动删除声明的对象。
相关链接:
的含义'%'
,搜索“运算符重载”
的gcnew
含义'^'
推荐阅读
- c# - 从 TreeView 隐藏 TreeNode
- php - 如何使用 php 将图像和数据插入 mysql?
- c# - 向基类构造函数添加参数,自动添加到所有后代
- python - 使用solve_ivp的“事件”检查收敛
- javascript - Vue.js 通过单击更改图像 src
- django - 如何在 Django 中将不可为空的 ForeignKey 添加到现有表中?
- uipath - UiPath中的Excel复制粘贴活动冻结而没有执行任何操作
- kubernetes - Kubernetes 卷挂载权限对于 Secret 不正确
- vba - 修复 PPT 图表中的轴值
- python - 查找numpy中的所有间隔