понимание String^ в C++ .NET

Stan Lippman говорил об этом здесь . Я думал, что это было интересно.

Сводка : Stroustrup первоначально использовал class для определения типов в шаблонах, чтобы не представлять новое ключевое слово. Некоторые в комитете волновались что эта перегрузка ключевого слова, ведомого к беспорядку. Позже, комитет представил новое ключевое слово typename для разрешения синтаксической неоднозначности и решил позволить ей также использоваться, чтобы определить, что шаблонные типы для сокращения беспорядка, но для обратной совместимости, class сохранили ее перегруженное значение.

5
задан Rob Kennedy 14 July 2009 в 20:53
поделиться

3 ответа

Строка ^ - указатель на управляемую кучу, также известную как дескриптор . Указатели и дескрипторы не взаимозаменяемы.

Вызов new выделяет объект в неуправляемой куче и возвращает указатель. С другой стороны, вызов gcnew выделит объект в управляемой куче и вернет дескриптор.

Строка username = "XYZ" - это просто сахар компилятора. Это эквивалентно

username = gcnew String(L"XYZ");
8
ответ дан 18 December 2019 в 14:49
поделиться

Это ссылка, а не указатель на строку со сборщиком мусора.

Она будет выделяться и освобождаться автоматически, когда на нее больше не ссылаются.

3
ответ дан 18 December 2019 в 14:49
поделиться

Если учесть, что ^ похож на shared_ptr вы будете недалеко от истины.

2
ответ дан 18 December 2019 в 14:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: