C++/CLI: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
FrescoBot (discussione | contributi)
m Bot: standardizzazione nome sezione e modifiche minori
mNessun oggetto della modifica
Riga 35:
===Finalizzatori e variabili automatiche===
 
Un'ulteriore differenza con C++/CLI è l'introduzione sintattica di [[finalizzatori]] <code>!ClassName</code>, un tipo speciale di distruttore non deterministico eseguito come parte della [[Garbage collection (computer science)|garbage collection routine]]. La sintassi dei distruttori classica del C++, quale <code>~ClassName()</code>, esiste anche per oggetti gestiti, e riflette meglio la semantica "tradizionale" del C++ di una distruzione deterministica (di fatto i distruttori possono essere invocati a livello di codice mediante <code> delete </code>.
 
Nel paradigma .NET naturale, il modello di distruzione non deterministico annulla il metodo protetto <code>Finalize</code> della classe root <code>Object</code>; mentre il modello determinstico è implementato attraverso il metodo <code>Dispose</code> dell'[[interfaccia]] <code>IDisposable</code> (che il compilatore C++/CLI trasforma in un distruttore). Oggetti provenienti da C# o VB.NET, che annullano il metodo Dipose, possono essere posti manualmente in C++/CLI mediante <code>delete</code>, esattamente come le classi .NET in C++/CLI.