23

我正在观看来自 //build/ 的视频,一些 MS 开发人员在他们的 C++11 程序中使用了这样的语法:

auto foo = ref new Foo();

我了解除了“ref”之外的所有内容。这意味着什么?

4

3 回答 3

10

即将推出的 Visual C++ 编译器添加了这种语法来处理 WinRT 对象(它们又是下一代 COM,我们现在经历了什么?COM、DCOM、COM+、ActiveX ......)

该行几乎等同于:

com_ptr_t<Foo> foo = CreateInstance<Foo>();

但也有一个新版本com_ptr_t,使用语法Foo^.

于 2011-09-23T14:14:42.870 回答
8

“ref new”是一个 2 标记关键字。它指示编译器实例化 Windows 运行时对象并自动管理对象的生命周期(通过“^”运算符)。

实例化 Windows 运行时对象会导致分配,但它不必在堆上。

于 2011-09-24T13:43:55.540 回答
2

在这种情况下, ref 代表引用计数。使用 ref 的类是 WinRT 组件,它具有开箱即用的引用计数机制。

于 2011-10-18T01:30:55.797 回答