C ++ ^ administrado (identificador) - > ¿Qué es y cómo se relaciona con las referencias y los punteros?

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

  •  10-07-2019
  •  | 
  •  

Pregunta

¿Cuál es la diferencia entre un identificador de un objeto en Managed C ++

como:

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

y los punteros comunes de C ++?

¿Cómo se relacionan con las referencias que tenemos en C #?

¿Fue útil?

Solución

No estás hablando de C ++ administrado (el más antiguo), sino de C ++ / CLI, ¿verdad?

En C #, su código es equivalente a

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

En C ++ / CLI, un identificador de un objeto es igual que una referencia en C #: tiene conteo de referencias, recolector de basura, etc.

Los punteros ordinarios de C ++, por otro lado, son (en la mayoría de los casos) punteros a objetos no administrados. Puede (por supuesto) tener punteros C ++ para objetos administrados, de la misma manera que tiene punteros disponibles en C # (en código inseguro). Busque aquí para obtener una explicación detallada de los punteros en C #, y aquí para obtener algunos detalles sobre los punteros en C ++ / CLI. Esos punteros no son manejados por el recolector de basura.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top