C++/CLI: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Riga 1:
{{T|inglese|informatica|dicembre 2016}}
'''C++/CLI''' ([[C++]] modificato per la [[Common Language Infrastructure]]) è un [[linguaggio di programmazione|linguaggio]] specifico creato da Microsoft e destinato a sostituire estensionile gestite[[Managed extensions per [[C++]]. Si tratta di una revisione completa che mira a semplificare la vecchia sintassi piùdel vecchia delManaged C gestito ++, che ora è sconsigliatodeprecato.<ref>[http://msdn.microsoft.com/en-us/library/b23b94s7.aspx Managed Extensions for C++ Syntax Upgrade Checklist - MSDN Library]</ref> C++/CLI era standardizzato da [[ECMA International|Ecma]] come '''ECMA-372'''. È disponibile in [[Microsoft Visual Studio|Visual Studio]] 2005, 2008, 2010, 2012, 2013 e 2015, incluse le versioni Express.
 
==Cambiamenti sintattici ==
 
C++ / CLI è concepito come un linguaggio a sé stante, con una nuovo insieme di parole chiave, a differenza del Managed C++ (MC++), che è più un'estensioni in cui le parole chiave non standard sono state modellate come ''or__value __gc''. Di conseguenza, introduce alcune importanti modifiche sintattiche, legate principalmente all'eliminazione di identificatori ambigui e all'aggiunta di funzionalità specifiche NET.
 
Molte sintassi in conflitto, come le versioni multiple dell'operatore <code>new()</code> in MC++, sono state separate: nel C++ / CLI e in .NET i tipi di riferimento vengono creati con la nuova parola chiave <code>gcnew</code> (che sta per ''[[Garbage collection|garbage collected]] new ()''). Inoltre, C ++ / CLI ha introdotto il concetto dei generici da .NET (simile, per gli scopi più comuni, ai template standard C ++, ma molto diversi nella loro implementazione).
 
===Puntatori===
 
In MC++, vi erano due diversi tipi di [[Puntatore (programmazione)|puntatori]]: puntatori <code>__nogc</code>, essenzialmente ordinari puntatori C++, e i puntatori <code>__gc</code>, usati per i tipi di riferimento .NET. Nel C++ / CLI, invece, l'unico tipo di puntatore è il normale puntatore C++, mentre i tipi di riferimento .NET sono accessibili attraverso un ''handle'' usando la nuova sintassi <code>ClassName^</code> invece di <code>ClassName*</code>. Questo nuovo costrutto è particolarmente utile quando il codice contiene insieme codice C++ standard e codice gestito; consente di rendere chiaro quali sono gli oggetti gestiti dal ''garbage collection'' automatico di .NET e quali sono invece gli oggetti che il programmatore deve distruggere in modo esplicito.
 
==Note==