C++/CLI

linguaggio di programmazione
Versione del 14 dic 2016 alle 22:14 di Superspritz (discussione | contributi) (traduzione parecchio imprecisa e inesatta, a tratti con significato completamente fuorviante ed errato - sistemo)

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 da Ecma come ECMA-372. È disponibile in 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 new() in MC ++, sono state separate: nel C ++ / CLI e in .NET i tipi di riferimento vengono creati con la nuova parola chiave gcnew (che sta per 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 puntatori: puntatori __nogc, essenzialmente ordinari puntatori C ++, e i puntatori __gc, 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 ClassName^ invece di ClassName *. 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