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