Описание тега copy-assignment
1
ответ
Действительно ли безопасно не проверять в операторе copy assignemt, присваивается ли объект самому себе?
Вот пример реализации "Правила трех", который я нашел: class Array { public: int size; int* vals; Array() : size(0), vals(NULL){} Array( int s, int* v ); Array(const Array&); // 1 Array& operator=(const Array&); // 2 ~Array(); // 3 }; Ar…
10 дек '18 в 22:01
2
ответа
Можно ли сделать так, чтобы `=` предпочитало присвоение из преобразования вместо (удаленного) копирования?
Я обнаружил несколько потоков, которые в значительной степени подразумевают, что это невозможно, но ни один из них не использует точно такую же комбинацию операторов и условий, поэтому я хотел бы спросить более конкретно. Надеюсь, это означает, чт…
12 июл '16 в 12:12
1
ответ
Как поменять местами два объекта без оператора копирования?
У меня есть класс А, где, оператор копирования копирования удаляется. Как я должен поменять местами два экземпляра? Я пытался с помощью std::swap но это не сработало. class A { private: int a; public: A& operator=(const A& other) = delete; A…
09 фев '19 в 21:28
4
ответа
Полезно ли указывать новый адрес в свободном хранилище при динамическом размещении?
Ниже приведено упражнение из C++ Primer 5th Edition: Упражнение 13.22. Предположим, что мы хотим, чтобы HasPtr вел себя как значение. То есть каждый объект должен иметь свою собственную копию строки, на которую указывают объекты. Мы покажем определе…
01 янв '14 в 01:50
1
ответ
Перегрузка оператора "+" & "=" проблема - школа asst
Первый раз здесь, но я задержусь на пару месяцев. В настоящее время балуется C++ с небольшим количеством знаний Java, а также с предыдущих курсов Comp Sci в школе. Я прошу прощения, если некоторые из вас смотрят на это и разочарованы, поскольку уже …
14 сен '14 в 04:48
1
ответ
Почему идеальная пересылка (перехват) не работает для реализации копирования-назначения?
В классе с серией ctors (большинство из которых имеют ровно один аргумент), я хочу, чтобы все ctor с одним аргументом также были отражены соответствующим оператором присваивания. Которы включают в себя, но не ограничиваются копи-ctor и move-ctor. Та…
13 ноя '17 в 20:56
2
ответа
Рекомендуются ли операторы копирования с идиомой копирования и обмена и проверкой самостоятельного назначения?
Здесь вы можете увидеть реализацию оператора присваивания копирования с самопроверкой проверки: String & operator=(const String & s) { if (this != &s) { String(s).swap(*this); //Copy-constructor and non-throwing swap } // Old resources …
09 май '16 в 20:49
2
ответа
Рекурсивный вызов в конструкторе копирования
Я реализовал класс, следуя правилу трех, и получаю сбой. После отладки я пришел к выводу, что конструктор копирования вызывает сам себя несколько раз вместо вызова оператора равенства. Почему это так? Разве это не должно вызывать оператор равенства?…
10 окт '18 в 13:40
1
ответ
Могу ли я написать операторы копирования и перемещения для класса?
Это мои прототипы, MyClass& operator=(MyClass rhs); // copy assignment MyClass& operator=(MyClass &&rhs); // move assignment Но когда я звоню MyClass a, b; a = std::move(b); есть ошибка. 556 IntelliSense: more than one operator "=" m…
17 апр '15 в 12:06
1
ответ
Назначение Python в массиве против скаляра
У меня есть 2D массив A формы (4,3)и одномерный массив a формы (4,), Я хочу поменять местами первые два ряда A, а также первые два элемента в a, Я сделал следующее: A[0,:],A[1,:] = A[1,:],A[0,:] a[0],a[1] = a[1],a[0] Видимо, это работает для a, но н…
30 дек '17 в 02:02
1
ответ
Автоматизация между контейнерами разных объектов с назначением копирования
У меня редкий вектор типа std::vector<SparseElement<T,I>> где SparseElement: template<typename T, typename I = unsigned int> struct SparseElement { I index; T value; //............ SparseElement &operator=(const std::pair<I,…
21 мар '13 в 12:29
3
ответа
Почему конструктор копирования вызывается перед назначением копирования?
class LinkedList { public: LinkedList() : _head(nullptr) {} LinkedList(ListElement *newElement) : _head(newElement) {} ~LinkedList() { }; LinkedList(const LinkedList& LL); LinkedList& operator=(LinkedList byValLinkedList); private: ListEleme…
31 май '16 в 01:04
1
ответ
Сгенерированные операторы копирования и перемещения?
В настоящее время я читаю книгу " Эффективное современное С ++" от Скотта Мейерса, и теперь я нахожусь по адресу: Пункт 17: Понимание генерации функций специальных членов. Мое недоразумение исходит из следующей части (обоснование): Две операции копи…
05 авг '15 в 17:08
2
ответа
Странный конструктор копирования
С помощью следующей программы C++: #include <memory> #include <iostream> using namespace std; struct my_class{ int value; my_class(int id): value(id){ cout<<"constructing "<<id<<endl; cout<<"address is "<<st…
21 дек '12 в 12:28
1
ответ
fill insert() - копировать конструктор и копировать присвоение noexcept status?
Должны ли элементы контейнера STL иметь noexcept конструкторы копирования и операторы копирования-назначения? Пожалуйста, предоставьте ссылку, если это возможно. Если нет, то каково состояние контейнера STL, когда исключение происходит во время муль…
24 авг '15 в 10:25
1
ответ
C++ копировать конструктор
Я пытаюсь получить хорошее представление о конструкторах копирования, и я нашел эту часть кода. #include<iostream> using namespace std; class A1 { int data; public: A1(int i = 10) : data(i) { cout << "I am constructing an A1 with: " <…
08 фев '16 в 11:17
2
ответа
Понимание конструктора и оператора копирования
По моему мнению, в случае использования оператора копирования 1, поэтому вывод должен быть 0 68 но это 0 87 и в случае 2 это 87 87 что хорошо #include <iostream> using namespace std; class numbered { static int un; public: int a; numbered (): …
31 дек '13 в 10:17
2
ответа
Реализация полноценного оператора копирования-назначения
В C++ Primer есть пример использования элементов управления копированием, чтобы сделать класс "полноценным"; то есть при копировании объекта копии являются независимыми. Предлагает следующий код: class HasPtrValue { public: HasPtrValue(const std::st…
24 фев '15 в 19:55
2
ответа
Удаление конструкторов копирования и операторов присваивания копии. Какие из них необходимы?
У меня есть вариант использования, что мой объект не должен быть скопирован каким-либо образом. Я написал преувеличенный полный список удалений конструктора копирования и оператора копирования. Их так много, что я не могу понять, какие из них исполь…
18 ноя '15 в 09:51
2
ответа
Назначение копирования C++ и перемещение не вызывается
Я пытаюсь реализовать копирование и перемещение заданий, но не понимаю, как их использовать. Я прочитал следующую тему Когда вызывался оператор копирования? Но это не сработало для меня. Учебный класс: class Directory{ string name; public: Directory…
18 ноя '17 в 07:33