value class ValBase
{
public:
int a;
};
ref class RefBase
{
public:
int a;
};
int main(array<System::String ^> ^args)
{
RefBase^ RefBase1 = gcnew RefBase; //LEGAL. Ref type Managed Obj created on CLR heap.
ValBase^ ValBase1 = gcnew ValBase; //LEGAL. Value type Managed Obj created on CLR heap.
RefBase* RefBase2 = new RefBase; //ILLEGAL: new cannot be used on Managed Ref Class
ValBase* ValBase2 = new ValBase; //This compiles okay but where is this "Managed Object" stored ? CLR heap or Native heap ?
}
В последнем присваивании, где хранится управляемый объект? Я совершенно не знаком с C++ CLI. Также верно ли, что типы значений должны использовать семантику стека, чтобы сделать код эффективным? i.e вместо ValBase^ValBase1 = gcnew ValBase, я должен просто использовать ValBase ValBase1;Где хранится этот управляемый объект?
Это * другой * вопрос, не стесняйтесь спрашивать его в новом вопросе. –