C ++ ^ administrado (identificador) - > ¿Qué es y cómo se relaciona con las referencias y los punteros?
-
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 #?
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.