最近学习c++/cli , 对于ref和value的class/struct定义仍然比较模糊。
资料上说ref是生成在managed heap上,而value可以在stack和managed heap上创建
但是我在vs里面试,ref class同样也可以在stack上create,编译器并没有报错,运行也一样。
那么这两种定义的边界在哪里?
如何能够感觉出差别?
ref 是引用变量不可能在栈上,所谓在栈上是他的引用相当于c++的指针
ref 类型变量 互相赋值是,是交换的引用,也就是地址
yourobjec^ a=gcnew youobject//如果不通过gcnew,他的默认值是NULL
yourobjec^ b;
b=a;
b和a是指向同一个物体
而value类型 b=a 则发生复制,a和b是不同的对象只是他们的类成员一样
你调试一下,看看那个对象的类型就知道了,他是CRefClas^ ,还是在托管堆上
value 无法用gcnew
要放到托管堆上除非装箱