Я только что вернулся на C ++ для игрового проекта для Windows 8 / RT после многих лет отсутствия в пользу C #.
Работая с сгенерированным игровым проектом Skeleton, я наткнулся на сигнатуры методов, подобные приведенной ниже. Может ли кто-нибудь просветить меня, что должен делать …
Concurrency::task<Platform::Array<byte>^> ReadDataAsync(Platform::String^ filename)
В C ++ / CX T^
это ручка для T
объект. По сути, это умный указатель, которому принадлежит ссылка на объект, на который указывает указатель, с некоторыми дополнительными дополнительными функциями, предоставляемыми компилятором.
Вы можете узнать все о шляпах в статье, «Типы, которые носят шляпы».
По-видимому, это называется оператором дескриптора объекта.
Оператор дескриптор-объект ^ известен как «шляпа» и по сути является интеллектуальным указателем C ++. Память, на которую он указывает, автоматически уничтожается, когда последняя шляпа выходит из области видимости или явно устанавливается на nullptr.
В соответствии с: https://msdn.microsoft.com/en-us/library/hh699870.aspx.
(Из раздела «Управление памятью» на этой странице.
^
Символ — это дескриптор объекта.
Например String^ s;
объявляет дескриптор объекта String.