C++ cli C++/CLI对象^%(插入符号百分比符号)声明的意思是什么?

C++ cli C++/CLI对象^%(插入符号百分比符号)声明的意思是什么?,c++-cli,C++ Cli,这显然是谷歌的证明,因为我无法让任何搜索引擎不扔掉“额外”字符。我也在C++中查阅MSDN,但是因为它的声明部分没有什么,所以我找不到c++/CLI引用。本质上,它是“代码”>“对象”*/的“托管”版本,并且在C++中引用类型为“代码> > REF< /COD>或 OUT/。这有点像C++引用,但对于托管对象。 > p>代码> %>代码>是.< /p> 它类似于本机引用(对象&),但跟踪引用可以引用CLR对象,而本机引用不能。这种区别是必要的,因为垃圾收集器可以移动CLR对象,因此CLR对象的内

这显然是谷歌的证明,因为我无法让任何搜索引擎不扔掉“额外”字符。我也在C++中查阅MSDN,但是因为它的声明部分没有什么,所以我找不到c++/CLI引用。本质上,它是“代码”>“对象”*/<代码>的“托管”版本,并且在C++中引用类型为“代码> > REF< /COD>或<代码> OUT/<代码>。这有点像C++引用,但对于托管对象。<> > p>代码> %>代码>是.< /p> 它类似于本机引用(
对象&
),但跟踪引用可以引用CLR对象,而本机引用不能。这种区别是必要的,因为垃圾收集器可以移动CLR对象,因此CLR对象的内存地址可能会更改

^
是一个。这仅仅意味着它是被管理的。参见和。

它的意思是“通过引用传递”:

在C++中也是这样:

 void foo(Object** arg) {
    *arg = new Object;
 }
或C#:


C++/CLI不区分ref和out,它没有C#语言所具有的明确的赋值检查功能,因此不需要区分两者。在VB.NET中相同,ByRef与ByVal。

这是一个通过引用管理的指针。所以,如果你有类似的东西:

void DoSomething(System::String^% stringObject)
在C#中,它看起来像:

void DoSomething(ref System.String stringObject)

MSDN:另请参见:@BlueRaja,如果您回答,我会将其标记为正确。我刚刚在文档中找到了该链接和额外的CLI部分。谢谢。上面@BlueRaja DannyPflughoeft评论中可能重复的MSDN链接现已被破坏。这是Wayback机器的有效存档版本:
void DoSomething(System::String^% stringObject)
void DoSomething(ref System.String stringObject)