我正在观看来自 //build/ 的视频,一些 MS 开发人员在他们的 C++11 程序中使用了这样的语法:
auto foo = ref new Foo();
我了解除了“ref”之外的所有内容。这意味着什么?
我正在观看来自 //build/ 的视频,一些 MS 开发人员在他们的 C++11 程序中使用了这样的语法:
auto foo = ref new Foo();
我了解除了“ref”之外的所有内容。这意味着什么?
即将推出的 Visual C++ 编译器添加了这种语法来处理 WinRT 对象(它们又是下一代 COM,我们现在经历了什么?COM、DCOM、COM+、ActiveX ......)
该行几乎等同于:
com_ptr_t<Foo> foo = CreateInstance<Foo>();
但也有一个新版本com_ptr_t
,使用语法Foo^
.
“ref new”是一个 2 标记关键字。它指示编译器实例化 Windows 运行时对象并自动管理对象的生命周期(通过“^”运算符)。
实例化 Windows 运行时对象会导致分配,但它不必在堆上。
在这种情况下, ref 代表引用计数。使用 ref 的类是 WinRT 组件,它具有开箱即用的引用计数机制。