^ был введен в C ++ / CLI для ссылки на управляемые объекты, заменив знак *, используемый для собственных указателей объектов. Итак, имея два типа, управляемый и собственный, нужно написать:
class Native
{
};
ref class Managed
{
};
Native* pn = new Native();
Managed^ pm = gcnew Managed();
& может использоваться для получения собственного указателя из экземпляра собственного класса. Он не используется таким же образом для управляемых классов, доступ к которым осуществляется только по ссылке.
Native n;
Native* pn = &n;