Acabo de encontrar este código y algunas búsquedas en Google no muestran ninguna explicación de esta misteriosa (para mí) sintaxis.
Hashtable^ tempHash = gcnew Hashtable(iterators_);
IDictionaryEnumerator^ enumerator = tempHash->GetEnumerator();
¿Qué diablos significa el caret? (El gcnew
también es nuevo para mí, y pregunté sobre eso aquí ).
Respuestas:
Esto es C ++ / CLI y el símbolo de intercalación es el equivalente administrado de un * (puntero) que en la terminología de C ++ / CLI se denomina 'identificador' a un 'tipo de referencia' (ya que aún puede tener punteros no administrados).
(Gracias a Aardvark por señalar la mejor terminología).
fuente
En general, el Punctuator
%
es^
como el Punctuator&
es*
. En C ++, el&
operador unario está en C ++ / CLI, el%
operador unario .Mientras
&ptr
produce aP*
,%mngd
rinde enMO^
.fuente
Significa que esta es una referencia a un objeto administrado frente a un puntero C ++ normal. Los objetos detrás de tales referencias son administrados por el tiempo de ejecución y se pueden reubicar en la memoria. También se recolectan basura automáticamente.
fuente
Cuando asigna memoria administrada, el recolector de basura puede mover esa memoria. El operador ^ es un puntero para la memoria administrada, que continúa apuntando al lugar correcto incluso si el recolector de basura mueve el objeto al que apunta.
fuente
Desde MSDN, parece que el símbolo de intercalación significa que está obteniendo un control del tipo que se está creando.
https://web.archive.org/web/20150117095313/http://msdn.microsoft.com/en-us/library/te3ecsc8%28VS.80%29.aspx
fuente
En C ++ / CLI significa un puntero administrado. Puede leer más sobre esto (y otras características de C ++ / CLI) aquí:
http://en.wikipedia.org/wiki/C%2B%2B/CLI
fuente
Significa que es una referencia a un objeto gestionado.
fuente