托管C ++ ^(句柄) - >它是什么以及它与引用和指针有什么关系

时间:2009-11-30 16:27:26

标签: managed-c++ handle

托管C ++中对象句柄的区别是什么

如:

System::String^ str = gcnew System::String();

和普通的C ++指针?

它们如何与我们在C#中的引用相关?

1 个答案:

答案 0 :(得分:1)

您不是在谈论(较旧的)托管C ++,而是关于C ++ / CLI,对吗?

在C#中,您的代码等同于

System.String str=new System.String();

在C ++ / CLI中,对象的句柄与C#中的引用相同 - 您有引用计数,垃圾收集器等。

另一方面,普通的C ++指针(在大多数情况下)是指向非托管对象的指针。您(当然)可以使用C ++指向托管对象的指针,就像在C#中使用指针一样(在不安全的代码中)。查看here以获取有关C#中指针的详细说明,并查看here以获取有关C ++ / CLI中指针的一些详细信息。那些指针不是由垃圾收集器处理的。