CLI-c ++引用和句柄

时间:2011-09-09 21:34:09

标签: .net reference c++-cli

我真的很抱歉这个愚蠢的问题,c ++的.net版本中是否有实际的引用?在本机c ++中有指针(***)和引用(&&&)。据我所知,在cli / c ++中有:内部指针(i nterior_ptr<>),固定指针(pin_ptr<>),句柄(^),跟踪引用({{1} })。

但实际的原生c ++引用是否相同?

1 个答案:

答案 0 :(得分:3)

C ++ / CLI支持常规指针和引用,就像C ++一样。但不是托管类的对象。这无法通过设计工作,当垃圾收集器压缩堆时,托管对象会在内存中移动。这在编译时检查得很好,编译器会在你弄错时告诉你。托管指针和引用语法是^和%。您可以使用pin_ptr&lt;&gt;将托管指针转换为非托管指针。类。其副作用是对象被固定,因此无法移动并使指针无效。

诸如“跟踪引用”和“对句柄的引用”之类的术语是托管指针的有用语义描述。它与运行时发生的事情没有任何关系。它们是常规指针,就像C ++指针一样,具有相同的性能。没有中间'句柄'。唯一的区别是垃圾收集器可以找回它们并更新它们的值。