auto foo = ref new Foo (); Что такое "реф"? - PullRequest
23 голосов
/ 23 сентября 2011

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

auto foo = ref new Foo();

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

Ответы [ 3 ]

10 голосов
/ 23 сентября 2011

Предстоящий компилятор Visual C ++ добавляет этот синтаксис для работы с объектами WinRT (которые, в свою очередь, являются следующим поколением COM, через что мы прошли сейчас: COM, DCOM, COM +, ActiveX, ...)

Эта строка почти эквивалентна:

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

Но есть и новая версия com_ptr_t, использующая синтаксис Foo^.

8 голосов
/ 24 сентября 2011

"ref new" - это ключевое слово из двух токенов.Он указывает компилятору создавать экземпляр объекта времени выполнения Windows и автоматически управлять временем жизни объекта (с помощью оператора «^»).

Создание экземпляра объекта времени выполнения Windows вызывает выделение, но оно не обязательно должно быть включенокуча.

2 голосов
/ 18 октября 2011

ref в этом случае означает подсчет ссылок. Классы, использующие ref, являются компонентом WinRT, который имеет механизмы подсчета ссылок из коробки.

...