CLI-c ++ ссылки и дескрипторы - PullRequest
       5

CLI-c ++ ссылки и дескрипторы

0 голосов
/ 10 сентября 2011

мне очень жаль за этот тупой вопрос, есть ли реальные ссылки в .net версии c ++? в нативном c ++ есть указатели (*, **) и ссылки (&, &&). Насколько я знаю, в cli / c ++ есть: внутренние указатели (i nterior_ptr<>), указатели пиннинга (pin_ptr<>), маркеры (^), отслеживание ссылок (^%).

но есть ли эквивалент для реальной нативной ссылки на c ++?

1 Ответ

3 голосов
/ 10 сентября 2011

C ++ / CLI поддерживает обычные указатели и ссылки так же, как C ++. Но не объектам управляемого класса. Это не может работать по проекту, управляемые объекты перемещаются в память, когда сборщик мусора сжимает кучу. Это хорошо проверено во время компиляции, компилятор сообщит вам, когда вы ошиблись. Синтаксис управляемого указателя и ссылки: ^ и%. Вы можете преобразовать управляемый указатель в неуправляемый с помощью класса pin_ptr <>. Чей побочный эффект заключается в том, что объект закреплен, поэтому его нельзя переместить и сделать указатель недействительным.

Такие термины, как «ссылка отслеживания» и «ссылка на дескриптор», являются полезным семантическим описанием управляемого указателя. В противном случае это не имеет ничего общего с тем, что происходит во время выполнения. Они являются обычными указателями, такими же, как указатели C ++, и имеют одинаковые характеристики. Посреднической «ручки» не существует. Разница лишь в том, что сборщик мусора может найти их обратно и обновить их значение.

...