ref class ClassA
{
public:
void Method()
{ }
};
...
ClassA ^a1 = gcnew ClassA(); // объект размещён в куче
a1->Method();
ClassA a2; // объект размещён на стеке
a2.Method();
Что онное обозначает?
(Взято из MSDN).
Значок ^ в управляемом C++ означает то же, что и значок * в нативном C++ - указатель. Но ^ - это указатель на управляемый объект! То есть уборкой мусора после такого объекта будет управлять среда исполнения - CLR (потому и называется язык Managed - управляемый).
* используется в паре с new
^ используется в паре с gcnew (gc - garbage collector - сборщик мусора)
В нативном C++ память под объект, выделенный оператором new, должен быть удалён оператором delete, в управляемом C++ его удалит сборщик мусора. Хотя и в MC++ можно использовать delete (я во все его тонкости не вникал - ну его нафиг - C# рулит!)
Стрелка -> применяется в C/C++/MC++ одинаково: для доступа к членам объектов, размещённых в куче; на них указывает указатель. Точечная нотация применяется для доступа к членам объектов, размещённых на стеке.
Пример:
Код:
Размер стека ограничен (обычно 1 Мб), поэтому всё в него не влезет.
На разных форумах часто приходится видеть как путаются в управляемом и неуправляемом цпп.
Терминология: managed c++ (MC++), C++.NET, C++/CLI - это всё управляемый цпп.
Узнать MC++ можно по ключевым словам ref, gcnew, по использованию знака ^, using namespace System.
Если используется /clr compiler option - название говорит само за себя - CLR - common language runtime - среда исполнения управляемого кода.
Напоследок выскажу имхо, что не стоит начинать изучение программирования с С++.NET. Лучше взять C# для знакомства со средой Framework .NET. Или взять нормальный С++. Лишь после глубокого освоения этих языков, можно познакомиться с мутантом C++.NET - он нужен в основном для объединения уже готового нативного и управляемого кода.
Мой вам совет: бросайте C++.NET. По нему и литературы мало, и используют его мало.
то есть загонять текст в существующую рамку (сжать-растянуть).
Поэтому я его забраковал.
Благодарю Koodeer, редко встретишь грамотных людей - в основном зелёные.
Всё, что умеет MC++, может и C#. И даже больше: для шарпа можно найти кучу исходников дополнительных библиотек и компонентов.
Если же используются возможности нативного C++ для масштабирования текста (какие?), то лучше всё приложение писать на обычном C++, без привлечения .NET. Имхо.
[COLOR="Silver"]PS а на зелёных(ого) гнать не надо... ;)[/COLOR]