Managed C ++ ^ (handle) - > Che cos'è e come si collega a riferimenti e puntatori

StackOverflow https://stackoverflow.com/questions/1820841

  •  10-07-2019
  •  | 
  •  

Domanda

Qual è la differenza tra un handle e un oggetto in C ++ gestito

come:

System::String^ str = gcnew System::String();

e i normali puntatori C ++?

Inoltre, in che modo si riferiscono ai riferimenti che abbiamo in C #?

È stato utile?

Soluzione

Non stai parlando del C ++ gestito (il più vecchio), ma del C ++ / CLI, giusto?

In C #, il tuo codice è equivalente a

System.String str=new System.String();

In C ++ / CLI, un handle per un oggetto è lo stesso di un riferimento in C # - hai il conteggio dei riferimenti, il garbage collector ecc.

I puntatori C ++ ordinari, d'altra parte, sono (nella maggior parte dei casi) puntatori a oggetti non gestiti. Puoi (ovviamente) avere puntatori C ++ per gli oggetti gestiti, proprio come hai i puntatori disponibili in C # (in codice non sicuro). Cerca qui per una spiegazione dettagliata dei puntatori in C #, e qui per alcuni dettagli sui puntatori in C ++ / CLI. Questi puntatori non sono gestiti dal Garbage Collector.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top