【问题标题】:What is the difference between gcnew and ref newgcnew 和 ref new 有什么区别
【发布时间】:2019-03-17 11:06:52
【问题描述】:

我只是偶然发现了ref newhere,我想知道gcnew 是否有区别。

代码示例here 显示了如何使用 ref new 创建托管堆上的对象句柄:

Foo^ spFoo = ref new Foo();

并使用 gcnew here

 int ^ i = gcnew int(13);

那么它们在概念上是等价的吗?

【问题讨论】:

    标签: c++-cli


    【解决方案1】:

    如果您只是对文档的布局感到困惑:

    C++/CLI 用于公共语言运行时 (CLR)。

    C++/CX 用于 Windows 运行时 (WinRT)。

    它们足够相似,可以一起记录,但它们并不相同。

    这就是为什么它们在您链接的文档中有三个标题:

    • 所有平台
    • Windows 运行时
    • 通用语言运行时

    对于 C++/CLI,gcnew 是您使用的。除非您使用 C++/CX,否则“Windows 运行时”部分不适用。

    【讨论】:

    • 这个答案将受益于实际将其绑定回ref newgcnew。现在,像 OP 这样没有使用过 C++/CLI 和 C++/CX 的编码器不会理解你确实回答了这个问题。
    • 谢谢@BenVoigt。我为回答的意图提供了更多背景信息。它只是为了解决表面问题,即理解有两种不同的运行时。
    • 谢谢@TomBlodget。除了您的回答,我还测试了 ref new 是否可以在 C++/CLI 上运行,并且正如您所料,它不能:(C2065) ref: undeclared identifier. (C2143) syntax error: missing ; before new
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 2017-10-31
    • 2018-06-04
    • 2012-12-29
    相关资源
    最近更新 更多