*
,**
)和引用(&
,&&
)。据我所知,在cli / c ++中有:内部指针(i nterior_ptr<>
),固定指针(pin_ptr<>
),句柄(^
),跟踪引用({{1} })。
但实际的原生c ++引用是否相同?
答案 0 :(得分:3)
C ++ / CLI支持常规指针和引用,就像C ++一样。但不是托管类的对象。这无法通过设计工作,当垃圾收集器压缩堆时,托管对象会在内存中移动。这在编译时检查得很好,编译器会在你弄错时告诉你。托管指针和引用语法是^和%。您可以使用pin_ptr&lt;&gt;将托管指针转换为非托管指针。类。其副作用是对象被固定,因此无法移动并使指针无效。
诸如“跟踪引用”和“对句柄的引用”之类的术语是托管指针的有用语义描述。它与运行时发生的事情没有任何关系。它们是常规指针,就像C ++指针一样,具有相同的性能。没有中间'句柄'。唯一的区别是垃圾收集器可以找回它们并更新它们的值。