Управляемый C ++ ^ (дескриптор) - > Что это такое и как это относится к ссылкам и указателям

StackOverflow https://stackoverflow.com/questions/1820841

  •  10-07-2019
  •  | 
  •  

Вопрос

В чем разница между дескриптором объекта в Managed C ++

такой как:

System::String^ str = gcnew System::String();

и обычные указатели C ++?

Кроме того, как они относятся к ссылкам, которые мы имеем в C #?

Это было полезно?

Решение

Вы говорите не о (более старом) управляемом C ++, а о C ++ / CLI, верно?

В C # ваш код эквивалентен

System.String str=new System.String();

В C ++ / CLI дескриптор объекта - это то же самое, что и ссылка в C # - у вас есть подсчет ссылок, сборщик мусора и т. д.

Обычные указатели C ++, с другой стороны, являются (в большинстве случаев) указателями на неуправляемые объекты. Вы можете (конечно) иметь указатели C ++ на управляемые объекты, точно так же, как у вас есть указатели, доступные в C # (в небезопасном коде). Смотрите здесь для получения подробного объяснения указателей и C # здесь с некоторыми подробностями об указателях в C ++ / CLI. Эти указатели не обрабатываются сборщиком мусора.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top