.NET семантика не имеет такого понятия, как конструктор копирования или оператор присваивания. Вы можете определить его в своих ref class
es, но он будет использоваться только на стороне C ++ , если вы явно запросите копию` Для классов значений все встроено и вы не можете переопределить семантику копирования. *
Пример:
public ref class Foo
{
Foo(const Foo% f);
};
Foo^ f = gcnew Foo;
Foo^ g = gcnew Foo(*f); // This will call C++ copy constructor. No .NET equivalent.
Посмотрите на ICloneable
, если вы хотите реализовать семантику глубокого копирования в стиле .NET.
Также посмотрите там , чтобы получить различные варианты копирования, которые вы можете иметь. Я бы настоятельно рекомендовал не хранить ref class
es в стеке.