Описание тега copy-and-swap
Идиома подкачки копий в C++ может использоваться для упрощения реализации оператора присваивания за счет использования конструктора копирования для создания локальной копии и замены ее на текущий объект.
3
ответа
Назначение перемещения несовместимо со стандартным копированием и обменом
Тестирование новой семантики Move. Я только что спросил о проблемах, которые у меня были с конструктором Move. Но, как выясняется в комментариях, проблема в том, что оператор "Назначение перемещения" и оператор "Стандартное назначение" конфликтуют п…
07 ноя '13 в 16:41
1
ответ
Почему мой конструктор копирования не вызывается, когда я делаю копию и меняю ее?
В следующем коде, когда используется оператор присваивания, почему не вызывается конструктор копирования или почему ему не соответствует print? #include <iostream> #include <cstring> using std::cout; using std::endl; class Person { priva…
17 сен '18 в 09:21
4
ответа
Как семантика перемещения улучшит "мой путь"?
Фон Ранее я прочитал следующие ответы сегодня, и это было похоже на переизучение C++, буквально. Что такое семантика перемещения? Что такое идиома копирования и обмена? Тогда я подумал, стоит ли мне менять "способы" использования этих захватывающих…
04 фев '15 в 01:45
0
ответов
Зачем мне нужен способ копирования и обмена?
Я не вижу смысла в использовании идиомы копирования и обмена в C++11. Если мне нужна ручка, я могу использовать unique_ptr или же shared_ptr, Если мне нужна коллекция предметов, я могу просто vector или же string, struct Relax { shared_ptr<Textur…
09 июн '16 в 11:17
6
ответов
Повторное использование идиомы копирования и обмена
Я пытаюсь поместить идиому копирования и замены в многократно используемый миксин: template<typename Derived> struct copy_and_swap { Derived& operator=(Derived copy) { Derived* derived = static_cast<Derived*>(this); derived->swap(…
16 авг '11 в 14:48
4
ответа
Почему некоторые люди используют своп для заданий на перемещение?
Например, stdlibC++ имеет следующее: unique_lock& operator=(unique_lock&& __u) { if(_M_owns) unlock(); unique_lock(std::move(__u)).swap(*this); __u._M_device = 0; __u._M_owns = false; return *this; } Почему бы просто не назначить двух чл…
14 июл '11 в 01:03
3
ответа
Можно ли иметь реализацию члена для обмена броском?
Общая рекомендация при написании классов (с использованием идиомы копирования и обмена) заключается в предоставлении функции-члена без броска свопинга. ( Действующий C++, 3-е издание, пункт 25 и другие ресурсы) Однако что, если я не могу предоставит…
05 окт '11 в 12:38
3
ответа
Что такое правило четырех (с половиной)?
Для правильной работы с объектным копированием эмпирическое правило - это правило трех. В C++11 семантика перемещения - это вещь, так что вместо этого это правило пяти. Тем не менее, в дискуссиях здесь и в Интернете я также видел ссылки на Правило Ч…
18 авг '17 в 10:17
1
ответ
Ошибка компоновки в функции-другом класса шаблона
У меня есть узел класса шаблона и для того, чтобы следовать идиоме копирования и замены, я пытаюсь написать swap функция, которая является friend класса Node мой код: Node.h #ifndef NODE_H #define NODE_H #include<memory> template<typename t…
26 ноя '16 в 07:26
3
ответа
Неэффективность идиомы копирования и обмена?
Я тестировал некоторый код, где есть std::vector член данных внутри класса. Класс является копируемым и подвижным, а operator= реализуется, как описано здесь, с использованием идиомы копирования и замены. Если есть два vector скажи v1 с большой емко…
03 мар '13 в 17:03
2
ответа
Общая память без блокировки в C++ для записей переменной длины
Я новичок в IPC. Процесс Writer записывает данные в общую память, Многие процессы чтения считывают данные. Данные, которые должны быть записаны, имеют уникальный идентификатор, должны быть проиндексированы по уникальному ключу для более быстрого дос…
02 фев '12 в 14:22
3
ответа
Скопируйте и поменяйте идиомы с чистого виртуального класса
Я пытаюсь реализовать виртуальный класс с чисто виртуальным методом и идиомой "копировать и менять", но я столкнулся с некоторыми проблемами. Код не скомпилируется, потому что я создаю экземпляр в операторе присвоения класса A, который содержит чист…
06 май '14 в 14:07
1
ответ
Эффективность копирования и обмена для общих указателей
Это можно рассматривать как продолжение, например. Почему присвоение общего указателя делает "своп"?, Вопрос об идиоме Copy&Swap;, используемой, например, в boost. Я понимаю, что преимущество Copy&Swap; заключается в повторном использовании существу…
30 июл '18 в 11:13
1
ответ
C++: идиома копирования и замены, альтернативный конструктор
NB: Этот вопрос следует за предыдущим, я надеюсь, что все еще можно задавать его как новый вопрос. Я пытаюсь реализовать "правило трех с половиной" (идиома копирования и замены) для класса дерева, который выглядит следующим образом: class Tree { fri…
09 авг '13 в 04:20
2
ответа
Копирование и замена через интерфейсы
Я пытаюсь реализовать идиому "копировать + своп" для достижения безопасности с сильными исключениями через уровень абстракции и, хотя принцип ясен, как это часто бывает, дьявол кроется в деталях. Скажем, у меня есть класс, который выглядит так: clas…
22 мар '12 в 17:33
1
ответ
Как правильно сделать глубокую копию для абстрактных классов?
Я работаю над системой столкновений, для которой мне нужно скопировать коллайдеры сущностей. Я делаю систему такой, что мне не нужно задавать в камне то, как я хочу обрабатывать столкновения (и я, вероятно, начну использовать AABB, но могу перейти н…
15 апр '17 в 11:23
2
ответа
Сбросить объект
В последнее время я часто сбрасываю объект, назначая ему новое значение с помощью operator=, Большинство моих занятий имеют copy constructor а также operator= определяется с помощью идиомы "копировать и менять". Что отлично работает в большинстве сл…
19 фев '16 в 11:23
0
ответов
Копирование и подстановка не рекомендуется?
В течение долгого времени я думал, что правильным способом реализации назначения копирования (для нетривиального класса) было использование идиомы copy-swap. struct A{ ... pointer to data A(A const& other){ ... complicated stuff, allocation, loo…
22 июл '18 в 08:35
3
ответа
Почему мы используем копирование и обмен при использовании оператора присваивания?
У меня есть вопрос об операторе присваивания при использовании метода копирования и замены. String & operator = (String s) // the pass-by-value parameter serves as a temporary { s.swap (*this); // Non-throwing swap return *this; }// Old resource…
01 окт '16 в 13:08
2
ответа
Идиома swap and copy не может использоваться в абстрактном классе
Я столкнулся с интересной ошибкой, когда попытался использовать идиому копирования и замены в абстрактном классе. Следующий код специально создан для демонстрации этой ситуации, если что-то не так, скажите мне, но не сосредотачивайтесь: template <…
22 май '16 в 21:35