web-dev-qa-db-fra.com

Différence entre c ++ managé et c ++

Le titre des sujets est en fait ma question. Et la deuxième question est: quand dois-je utiliser quoi de ces deux?

49
nutario

Lorsqu'il n'est pas spécifié, C++ est un C++ non géré, compilé en code machine. En C++ non managé, vous devez gérer l'allocation de mémoire manuellement.

Managed C++ est un langage inventé par Microsoft, qui se compile en bytecode exécuté par le .NET Framework. Il utilise principalement la même syntaxe que C++ (d'où le nom) mais est compilé de la même manière que C # ou VB.NET; fondamentalement, seule la syntaxe change, par ex. en utilisant '->' pour pointer vers un membre d'un objet (au lieu de '.' en C #), en utilisant '::' pour les espaces de noms, etc.

Le C++ managé a été conçu pour faciliter la transition du C++ classique au .NET Framework. Il n'est pas destiné à être utilisé pour démarrer de nouveaux projets (C # est préférable).

57
Laurent

"Managed C++" fait référence à un langage qui était inclus dans Visual Studio.NET/VisualStudio.NET 2003. Il a depuis été obsolète , le dernier .net C++ étant C++/CLI.

12
TraumaPony

Vous pouvez coder C++ natif de deux manières différentes. La première consiste à compiler directement en code machine avec uniquement le système d'exploitation entre vous et la plate-forme (matériel). Le deuxième codage natif est effectué avec MFC (Microsoft Foundation Classes). C'est le même que le premier exemple, sauf pour l'utilisation de MFC.

Le C++ managé utilise le CLR (Common Language Runtime) Le CLR ainsi que les bibliothèques de classes de framework .net constituent le .NET Framework. Cette norme C++/CLI gérée utilise le framework .Net avec MSIL (Microsoft Intermediate Language). Cette norme fonctionne en mappant au code machine uniquement lorsque le programme s'exécute à l'aide d'un compilateur juste à temps. Si votre code s'exécute sur différentes plates-formes matérielles, l'utilisation de code managé sera beaucoup plus facile. Comme pour tout, il y a un léger prix à payer pour plus de commodité, car le code natif s'exécutera plus rapidement.

3
Wade Nelson

Je pense que vous devriez regarder cette question .

2
GSerg

C++ géré signifie que l'allocation de mémoire, la gestion, la récupération de place sont gérées par la machine virtuelle. Alors qu'en C++ "normal", il faudrait allouer et désallouer de la mémoire.

0
hayalci

Vous utiliserez C++ managé lorsque vous souhaitez utiliser une bibliothèque de classes C++ native à partir de code managé. Dans ce cas, vous encapsulez les classes non managées dans des classes C++ gérées, puis vous les utilisez dans n'importe quel langage CLR.

0
radu_c