C ++ géré ^ (handle) - > De quoi s'agit-il et quel est son rapport avec les références et les pointeurs

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

  •  10-07-2019
  •  | 
  •  

Question

Quelle est la différence entre un descripteur et un objet dans Managed C ++

tels que:

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

et les pointeurs C ++ ordinaires?

De plus, en quoi sont-ils liés aux références que nous avons en C #?

Était-ce utile?

La solution

Vous ne parlez pas de l'ancien C ++ managé, mais de C ++ / CLI, n'est-ce pas?

En C #, votre code est équivalent à

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

Dans C ++ / CLI, un descripteur d'objet est identique à une référence en C #: vous disposez d'un comptage de références, d'un garbage collector, etc.

Les pointeurs C ++ ordinaires, en revanche, sont (dans la plupart des cas) des pointeurs sur des objets non gérés. Vous pouvez (bien sûr) avoir des pointeurs C ++ sur les objets gérés, comme vous le feriez avec des pointeurs disponibles en C # (en code non sécurisé). Regardez ici pour une explication détaillée des pointeurs en C #, ici pour obtenir des détails sur les pointeurs dans C ++ / CLI. Ces pointeurs ne sont pas gérés par le ramasse-miettes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top