c -cli – C/C++LI,对跟踪句柄的“常量”引用
发布时间:2020-12-16 10:16:53 所属栏目:百科 来源:网络整理
导读:我在代码中发现了类似的东西: void foo(IListint^ const list ) { ... } 这个^ const意思?我查看了C/C++LI规范,但没有找到关于制作常量跟踪引用的评论,也没有发现^组合. 这合法吗? 解决方法 它是跟踪句柄不变的参考. 它允许您通过引用而不是值传递句柄.据
我在代码中发现了类似的东西:
void foo(IList<int>^ const & list ) { ... } 这个^ const&意思?我查看了C/C++LI规范,但没有找到关于制作常量跟踪引用的评论,也没有发现^&组合. 这合法吗? 解决方法
它是跟踪句柄不变的参考.
它允许您通过引用而不是值传递句柄.据推测,作者认为它比复制手柄更有效. 如果作者想要使句柄保持不变,他应该使用其中任何一个 Method(TestClass const ^ const & parameter) Method(TestClass const^ parameter) 或者 每个例子: // 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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |