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