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

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

, таких как:

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

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

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

1 Ответ

1 голос
/ 17 декабря 2009

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

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

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

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

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

...