Подтвердить что ты не робот

В С++/CLI, что делает символ шляпы?

Я читал Ivor Horton Начиная Visual С++ 2008, и многие из его примеров CLR имеют это определение для main:

int main(array<System::String ^> ^args)

Я вернулся, за страницей, в начало книги, чтобы найти первый такой экземпляр с объяснением, что он на самом деле означает, но не смог найти его.

Очевидно, это означает то же, что и стандартный int main(int argc, char *argv[]), но я хотел бы знать, когда и почему этот ^ действительно используется и почему он даже существует (делает ли он что-то, что указывает * и ссылки & не может представлять)?

4b9b3361

Ответ 1

Это управляемый указатель - в то время как * отмечает указатель на неуправляемый объект, ^ указывает на собранный мусором объект (обрабатываемый каркасом). Прочтите этот для получения дополнительной информации о том, как указатели обрабатываются в .NET.

Ответ 2

Чтобы добавить к этому, в С++/CLI управляемые указатели обрабатываются отдельно от обычных указателей, поэтому вы даже выделяете их с другим ключевым словом:

NativeObject* n = new NativeObject();
ManagedObject^ m = gcnew ManagedObject();

Управляемые и Родные объекты - две совершенно разные вещи, и вы не можете их смешивать (ну, не легко).

Ответ 3

Смотрите это для полного обсуждения: http://msdn.microsoft.com/de-de/library/yk97tc08.aspx:

дескриптор объекта на управляемом куча указывает на "весь" объект и а не члену объекта.