C++/CLI
C++/CLI (C++ modificato per la Common Language Infrastructure) è un linguaggio specifico creato da Microsoft e destinato a sostituire estensioni gestite per C++. Si tratta di una revisione completa che mira a semplificare la sintassi più vecchia del C gestito ++, che ora è sconsigliato.[1] C++/CLI era standardizzato daEcma come ECMA-372. È disponibile in Visual Studio 2005, 2008, 2010, 2012, 2013 e 2015, incluse le versioni Express.
I cambiamenti di sintassi
C ++ / CLI deve essere pensato come un linguaggio a sé stante (con una nuova serie di parole chiave, per esempio), invece di C ++ superset-oriented Managed C++ (MC ++) (le quali parole chiave non standard sono state modellate come or__value __gc). A causa di questo, ci sono alcune importanti modifiche sintattiche, soprattutto legate all'eliminazione di identificatori ambigui e l'aggiunta di funzionalità specifiche NET.
Molte sintassi contrastanti, come le versioni multiple dell' operatore new() in MC ++, sono state divise: nel C ++ / CLI ed in.NET i tipi di riferimento sono creati con la nuova parola chiave gcnew (ad esempio garbage collected new ()). Inoltre, C ++ / CLI ha introdotto il concetto di generici da .NET (simile, per gli scopi più comuni, per i modelli standard C ++, ma molto diversa nella loro implementazione).
Puntatori
In MC ++, vi erano due diversi tipi di puntatori: puntatori __nogc che erano normali puntatori C ++, mentre i puntatori __gc lavorarono sui tipi di riferimento .NET. Nel C ++ / CLI, tuttavia, l'unico tipo di puntatore è il normale puntatore C ++, mentre i tipi di riferimento .NET sono accessibili attraverso un puntatore, con la nuova sintassi ClassName (invece di ClassName ). Questo nuovo costrutto è particolarmente utile quando gestito ed il codice standard C ++ è mescolato;è chiaro che gli oggetti automaticamente sono sotto il .NET garbage collection e quindi il programmatore deve ricordarsi di distruggerli in modo esplicito.