2011-01-13 4 views
30

Qualsiasi sito valido o spiegazione su cosa sia un ref class e quando dichiarare una classe come "classe ref"?Classe di riferimento C++ gestita

La spiegazione su MSDN non era abbastanza per me,

base_type (opzionale)

Un tipo di base. Una classe ref o una struct ref può ereditare da zero o più interfacce gestite e zero o un tipo ref. Una struttura value o value struct può ereditare solo da zero o più interfacce gestite.

ref

Il ref parola indica al compilatore che la classe o struttura saranno assegnate mucchio e un riferimento sarà passata alle funzioni o memorizzato in membri della classe. La parola chiave value indica al compilatore che tutti i dati nella classe o nella struttura vengono passati alle funzioni o memorizzati nei membri.

risposta

47

Fondamentalmente, un ref class è una classe CLR. È l'equivalente di class in C#.

Questo crea un tipo di riferimento gestito dal CLR. Se vuoi creare una classe utilizzabile da C#, normalmente creerai un ref class. (ref struct, tra l'altro, fa esattamente la stessa cosa, ma con classe standard C++ s 'contro le regole struct predefinito di accessibilità.)

Inoltre, solo per riferimento - al fine di rendere un tipo di valore (struct in C#), è utilizzare value class o value struct.

Una buona spiegazione di molte di queste nuove parole chiave è Herb Sutter's post on C++/CLI Keywords. Questo è un utile riferimento se sei nuovo in C++/CLI, ma hai uno sfondo C++ solido.

+0

Ben spiegato il concetto di base. Grazie! questo è esattamente quello che stavo cercando :) –