Ho iniziato a sviluppare con VC++ 2005 Xpress utilizzando il codice gestito (managed code).

Ho notato che per istanziare una classe si procede nel seguente modo

codice:
MyClass ^mc; // handler su garbage collected heap
mc = gcnew MyClass(); allocazione memoria e costruzione oggetto
Leggendo la documentazione ho capito le seguenti cose:

Per istanziare una classe si dichiara una specie di puntatore usando l'operatore ^ invece del classico *. Inoltre si usa l'operatore gcnew che restituisce appunto un handler (^) di tipo MyClass;

l'allocazione dinamica fatta con ^ non necessita dell'operatore delete e/o delete[] in quanto è il garbge collector a far pulizia automaticamente;

^mc non è un puntatore e non è ammessa alcuna aritmetica su di essi (ho provato a stampare l'indirizzo contenuto in mc con cout << mc; e ho ottenuto un errore).

E' corretto oppure mi è sfuggito qualcosa?

Grazie.