Скопируйте конструктор и оператор присваивания в CLI - PullRequest
1 голос
/ 23 мая 2011

Я пытаюсь найти примеры операторов присваивания и конструкторов копирования в C ++ / CLI. Я провел много времени в Google и, к удивлению, не могу найти достойного примера чего-то, что кажется довольно распространенным.

1 Ответ

5 голосов
/ 23 мая 2011

.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 в стеке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...