Я смотрел видео, //build/, и некоторые из разработчиков MS использовали такой синтаксис в своих программах на С++ 11:
auto foo = ref new Foo();
Я понимаю, что все делает в этой строке, кроме "ref". Что это значит?
Ответ 1
Предстоящий компилятор Visual С++ добавляет этот синтаксис для работы с объектами WinRT (которые, в свою очередь, являются следующим поколением COM, что мы теперь пережили? COM, DCOM, COM +, ActiveX,...)
Эта строка почти эквивалентна:
com_ptr_t<Foo> foo = CreateInstance<Foo>();
Но есть и новая версия com_ptr_t, используя синтаксис Foo^.
Ответ 2
"ref new" - это 2 ключевого слова token. Он инструктирует компилятор создать экземпляр объекта времени выполнения Windows и автоматически управлять временем жизни объекта (через оператор "^" ).
Создание экземпляра объекта времени выполнения Windows вызывает выделение, но оно не должно быть в куче.
Ответ 3
ref в этом случае означает подсчет ссылок. Классы, использующие ref, представляют собой компонент WinRT, у которых есть обработчики ссылок из коробки.