web-dev-qa-db-fra.com

Classe de référence C ++ gérée

Tout bon site ou explication sur ce qu'est un ref class et quand déclarer une classe comme "classe ref"?

L'explication sur msdn ne me suffisait pas,

type_base (facultatif)

Un type de base. Une classe ref ou une structure ref peut hériter de zéro ou plusieurs interfaces gérées et de zéro ou un type ref. Une classe de valeur ou une structure de valeur ne peut hériter que de zéro ou plusieurs interfaces gérées.

ref

Le mot clé ref indique au compilateur que la classe ou la structure sera allouée sur le tas et qu'une référence sera transmise aux fonctions ou stockée dans les membres de la classe. Le mot clé value indique au compilateur que toutes les données de la classe ou de la structure sont passées aux fonctions ou stockées dans les membres.

34
freshWoWer

Fondamentalement, un ref class est une classe CLR. C'est l'équivalent de class en C #.

Cela crée un type de référence géré par le CLR. Si vous souhaitez créer une classe utilisable à partir de C #, vous devez normalement créer un ref class. (ref struct, soit dit en passant, fait exactement la même chose, mais avec les règles d'accessibilité standard de la classe C++ par rapport à la structure par défaut.)

Aussi, juste pour référence - afin de créer un type de valeur (struct en C #), vous utiliseriez value class ou value struct.

Une bonne explication de bon nombre de ces nouveaux mots clés est publication de Herb Sutter sur les mots clés C++/CLI . Il s'agit d'une référence utile si vous débutez en C++/CLI, mais que vous avez une solide expérience en C++.

56
Reed Copsey