这种奇怪的语法是什么意思
今天我看到了以下语法。谁能告诉我这句话的意思:
System::ComponentModel::Container ^components;
在我使用向导创建服务后,我在 Visual C++ 中得到了这段代码。
Today I saw the following syntax. Can anybody tell me the meaning of this:
System::ComponentModel::Container ^components;
I got this code in Visual C++, after I used a wizard to create a service.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
^
运算符(不要与二进制 XOR 运算符混淆)特定于 C++/CLI。它用于声明 .NET 托管对象的句柄。
句柄是对对象的引用,与传统的 C++ 指针不同,它允许垃圾收集针对引用的对象正确运行,从而无需手动删除对象。
此语法取代托管 C++ 扩展的
__gc
指针。更多详细信息可以在这里找到:http://en.wikipedia.org/wiki/ C%2B%2B/CLI
The
^
operator (not to be confused with the binary XOR operator) is specific to C++/CLI.It is used to declare a handle to a .NET managed object.
A handle is a reference to the object which differs from traditional C++ pointers in the fact that it allows Garbage Collection to function correctly for the referenced object, making manual object deletion unnecessary.
This syntax supersedes the managed C++ extensions'
__gc
pointers.More details can be found here: http://en.wikipedia.org/wiki/C%2B%2B/CLI
它是 C++/CLI 句柄。 C++/CLI 是 Microsoft 对 C++ 的托管扩展,用于提供与 .NET CLR 的兼容性。
在此处阅读有关 C++/CLI 的更多信息。
It is C++/CLI handle. C++/CLI is Microsoft's managed extension to C++ to provide compatibility with .NET CLR.
Read here a little bit more about C++/CLI.
这是托管 C++,而不是 C++。
该行定义了一个变量组件,它是一个指向 System::ComponentModel::Container 的托管指针
This is managed C++, which is not C++.
The line defines a variable components which is a managed pointer to System::ComponentModel::Container