c -cli – CC++LI,对跟踪句柄的“常量”引用

c -cli – CC++LI,对跟踪句柄的“常量”引用,第1张

概述我在代码中发现了类似的东西: void foo(IList<int>^ const & list ) { ... } 这个^ const&意思?我查看了C/C++LI规范,但没有找到关于制作常量跟踪引用的评论,也没有发现^&组合. 这合法吗? 它是跟踪句柄不变的参考. 它允许您通过引用而不是值传递句柄.据推测,作者认为它比复制手柄更有效. 如果作者想要使句柄保持不变,他应该使用其中任何一个 Met 我在代码中发现了类似的东西:

voID foo(IList<int>^ const & List ) { ... }

这个^ const&意思?我查看了C/C++li规范,但没有找到关于制作常量跟踪引用的评论,也没有发现^&组合.

这合法吗?

解决方法 它是跟踪句柄不变的参考.

它允许您通过引用而不是值传递句柄.据推测,作者认为它比复制手柄更有效.

如果作者想要使句柄保持不变,他应该使用其中任何一个

Method(TestClass const ^ const & parameter) Method(TestClass const^ parameter)

或者
方法(TestClass const ^&参数) – 但调用者必须首先构造句柄

TestClass const ^ constHandle = nonConstHandle

每个例子:

// test.cpp : defines the entry point for the console application.//#include "stdafx.h"ref class TestClass{public:    voID setA(int value)    {        a = value;    }    TestClass() :         a(10)    {    }private:        int a;};class TakesHandle{public:    voID methodX1(TestClass const ^ const & parameter)    {    // Un-commenting below causes compiler error    // parameter->setA(11);    }    voID methodX2(TestClass const^ parameter)    {    // Un-commenting below causes compiler error    // parameter->setA(11);    }    voID methodX3(TestClass const^& parameter)    {    // Un-commenting below causes compiler error    // parameter->setA(11);    }};int _tmain(int argc,_TCHAR* argv[]){    TakesHandle takes;    TestClass ^ test1 = gcnew TestClass();    // compiles    takes.methodX1(test1);    // compiles    takes.methodX2(test1);    TestClass const ^ constHandle = test1;    takes.methodX3(constHandle);    return 0;}
总结

以上是内存溢出为你收集整理的c -cli – C/C++LI,对跟踪句柄的“常量”引用全部内容,希望文章能够帮你解决c -cli – C/C++LI,对跟踪句柄的“常量”引用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1218949.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存