托管 C++ 中对象的句柄有什么区别
such as:
System::String^ str = gcnew System::String();
和普通的 C++ 指针?
另外它们与我们在 C# 中的引用有何关系?
您不是在谈论(较旧的)托管 C++,而是在谈论 C++/CLI,对吧?
在 C# 中,您的代码相当于
System.String str=new System.String();
在 C++/CLI 中,对象的句柄与 C# 中的引用相同 - 有引用计数、垃圾收集器等。
另一方面,普通 C++ 指针(在大多数情况下)是指向非托管对象的指针。 (当然)您可以使用 C++ 指针来指向托管对象,就像在 C# 中使用指针一样(在不安全的代码中)。看here http://www.c-sharpcorner.com/UploadFile/rajeshvs/PointersInCSharp11112005051624AM/PointersInCSharp.aspx有关 C# 中指针的详细说明,以及here http://en.wikipedia.org/wiki/C%2B%2B/CLI有关 C++/CLI 中指针的一些详细信息。这些指针不由垃圾收集器处理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)