Je viens de tomber sur ce code et quelques recherches sur Google ne révèlent aucune explication de cette mystérieuse (pour moi) syntaxe.
Hashtable^ tempHash = gcnew Hashtable(iterators_);
IDictionaryEnumerator^ enumerator = tempHash->GetEnumerator();
Que diable signifie le curseur? (Le gcnew
est également nouveau pour moi, et j'ai posé des questions à ce sujet ici .)
Réponses:
Il s'agit de C ++ / CLI et le signe d'insertion est l'équivalent géré d'un * (pointeur) qui, dans la terminologie C ++ / CLI, est appelé un «handle» vers un «type de référence» (car vous pouvez toujours avoir des pointeurs non gérés).
(Merci à Aardvark d'avoir souligné la meilleure terminologie.)
la source
En général, le ponctuateur
%
est à^
comme le ponctuateur&
est à*
. En C ++, l'&
opérateur unaire est en C ++ / CLI, l'%
opérateur unaire .Alors que
&ptr
donne aP*
,%mngd
donne àMO^
.la source
Cela signifie qu'il s'agit d'une référence à un objet géré par rapport à un pointeur C ++ normal. Les objets derrière de telles références sont gérés par le runtime et peuvent être déplacés dans la mémoire. Ils sont également récupérés automatiquement.
la source
Lorsque vous avez alloué de la mémoire gérée, cette mémoire peut être déplacée par le garbage collector. L'opérateur ^ est un pointeur pour la mémoire gérée, qui continue de pointer au bon endroit même si le garbage collector déplace l'objet vers lequel il pointe.
la source
À partir de MSDN, il semble que le signe d'insertion signifie que vous obtenez une poignée pour le type en cours de création.
https://web.archive.org/web/20150117095313/http://msdn.microsoft.com/en-us/library/te3ecsc8%28VS.80%29.aspx
la source
En C ++ / CLI, cela signifie un pointeur géré. Vous pouvez en savoir plus à ce sujet (et d'autres fonctionnalités C ++ / CLI) ici:
http://en.wikipedia.org/wiki/C%2B%2B/CLI
la source
Cela signifie qu'il s'agit d'une référence à un objet géré.
la source