Managed C ++ ^ (Handle) -> Was ist das und wie verhält sie sich auf Referenzen und Zeiger

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

  •  10-07-2019
  •  | 
  •  

Frage

Was ist der Unterschied zwischen einem Handgriff zu einem Objekt in Managed C ++

wie:

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

und die gewöhnlichen C ++ Zeiger?

Auch in welcher Beziehung stehen sie zu den Referenzen wir in C #?

War es hilfreich?

Lösung

Sie sprechen nicht über (der älteren) Managed C ++, aber etwa C ++ / CLI, nicht wahr?

In C # Code entspricht

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

In C ++ / CLI, ein Handle für ein Objekt ist genau das gleiche wie eine Referenz in C # -. Sie Referenzzählung haben, Garbage Collector etc

Ordinary C ++ Zeiger, auf der anderen Seite, sind (in den meisten Fällen) Zeiger auf nicht verwalteten Objekte. Sie können (natürlich) haben C ++ Zeiger auf verwaltete Objekte, so wie Sie Zeiger in C # (in unsicheren Code). Schauen Sie hier für eine detaillierte Erklärung von Zeigern in C # und hier für einige Details über Zeiger in C ++ / CLI. Diese Zeiger werden nicht vom Garbage Collector behandelt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top