В чем разница между дескриптором объекта в Managed C++
Такие как:
System::String^ str = gcnew System::String();
а обычные указатели С++?
Кроме того, как они связаны со ссылками, которые у нас есть в C#?
В чем разница между дескриптором объекта в Managed C++
Такие как:
System::String^ str = gcnew System::String();
а обычные указатели С++?
Кроме того, как они связаны со ссылками, которые у нас есть в C#?
Вы говорите не о (старом) Managed C++, а о C++/CLI, верно?
В С# ваш код эквивалентен
System.String str=new System.String();
В C++/CLI дескриптор объекта аналогичен ссылке в C# — у вас есть подсчет ссылок, сборщик мусора и т. д.
С другой стороны, обычные указатели C++ (в большинстве случаев) являются указателями на неуправляемые объекты. Вы можете (конечно) иметь указатели C++ на управляемые объекты точно так же, как у вас есть указатели, доступные в C# (в небезопасном коде). См. здесь подробное объяснение указателей в C# и здесь некоторые подробности об указателях в C++/CLI. Эти указатели не обрабатываются сборщиком мусора.