Подтвердить что ты не робот

Auto foo = ref new Foo(); Что такое "ref"?

Я смотрел видео, //build/, и некоторые из разработчиков MS использовали такой синтаксис в своих программах на С++ 11:

auto foo = ref new Foo();

Я понимаю, что все делает в этой строке, кроме "ref". Что это значит?

4b9b3361

Ответ 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, у которых есть обработчики ссылок из коробки.