Второй вопрос: когда мне использовать что из этих двух?





Управляемый C++ означает, что выделение памяти, управление и сборка мусора обрабатываются виртуальной машиной. Тогда как в «обычном» C++ вам придется выделять и освобождать память.
Думаю, стоит посмотреть этот вопрос.
Если не указано иное, C++ является неуправляемым C++, скомпилированным в машинный код. В неуправляемом C++ вы должны управлять выделением памяти вручную.
Управляемый C++ - это язык, изобретенный Microsoft, который компилируется в байт-код, выполняемый .NET Framework. Он использует в основном тот же синтаксис, что и C++ (отсюда и название), но компилируется так же, как C# или VB.NET; в основном меняется только синтаксис, например использование '->' для указания на член объекта (вместо '.' в C#), использование '::' для пространств имен и т. д.
Управляемый C++ был создан для облегчения перехода от классического C++ к .NET Framework. Он не предназначен для запуска новых проектов (предпочтительно C#).
Предупреждение о совете не использовать управляемый C++ для новых проектов. Начиная с Visual Studio 2008 и далее Managed C++ имеет некоторые функции, которые превосходят C#. Они относятся к работе с объектами IDisposable. См. msdn.microsoft.com/en-us/library/ms235315.aspx
Управляемый C++ и C++ / CLI - два разных зверя. Управляемый C++ - отвратительное расширение C++, которое никогда не должно было появиться в свет. C++ / CLI официально является отдельным языком, поэтому можно добавлять новые ключевые слова, и с ним гораздо приятнее работать.
Так управляется C++ / CLI или нет?
@KyleDelaney C++ / CLI находится под управлением.
Вопреки распространенному мнению, Managed C++ компилируется не в байт-код, а в исполняемый файл в смешанном режиме, переключаясь между байт-кодом и собственным кодом, в зависимости от того, какие объекты используются. Можно создать полностью управляемый исполняемый файл с помощью C++ / CLI, если не используется ни одна из «небезопасных» функций C++ (например, CRT или STL).
«Управляемый C++» относится к языку, который был включен в Visual Studio.NET/Visual Studio.NET 2003. Он был включен с момента устарел, а последним .NET C++ является C++ / CLI.
Вы будете использовать управляемый C++, когда захотите использовать собственную библиотеку классов C++ из управляемого кода. В этом случае вы оборачиваете неуправляемые классы в управляемые классы C++, а затем используете их на любом языке CLR.
Вы можете кодировать собственный C++ двумя разными способами. Первый - это компиляция непосредственно в машинный код с использованием только операционной системы между вами и Платформа (аппаратное обеспечение). Второе собственное кодирование выполняется с помощью MFC (Microsoft Foundation Classes). Это то же самое, что и в первом примере, за исключением использования MFC.
Управляемый C++ использует CLR (Common Language Runtime). CLR вместе с библиотеками классов .NET Framework составляют .NET Framework. Этот управляемый стандарт C++ / CLI использует платформу .NET вместе с CIL (Microsoft Intermediate Language). Этот стандарт работает путем сопоставления с машинным кодом только тогда, когда программа выполняется с использованием своевременного компилятора. Если ваш код будет работать на разных аппаратных платформах, использование управляемого кода будет намного проще. Как и во всем, за удобство приходится платить небольшую цену, поскольку собственный код будет работать быстрее.
Управляемые расширения для C++ или просто Managed C++ - это устаревший набор отклонений Microsoft от C++, включая грамматические и синтаксические расширения, ключевые слова и атрибуты, для переноса синтаксиса и языка C++ в .NET Framework. Эти расширения позволили коду C++ быть нацеленным на среду CLR в форме управляемого кода, а также продолжить взаимодействие с машинным кодом. Управляемый C++ не был полностью автономным или полноценным языком программирования. en.wikipedia.org/wiki/…