Вопросы по теме 'move-constructor'

Переместить конструктор/оператор=
Я пытаюсь узнать о новой функции C++, а именно о перемещении конструктора и назначении X::operator=(X&&) , и я нашел интересный пример , но единственное, что я даже не понимаю, но больше не согласен, это одна строка в операторе перемещения и...
1510 просмотров

Использование семантики перемещения с std::pair или std::tuple
Предположим, вы хотите воспользоваться преимуществами семантики перемещения, но один из ваших перемещаемых классов должен быть частью класса std::pair . Цель состоит в том, чтобы создать функцию, которая возвращает std::pair , которую можно...
14349 просмотров

Используйте std::move в конструкторе перемещения С++ 11 с унифицированным синтаксисом инициализации.
У меня есть этот простой класс: struct Worker { Worker() : done{false} {} Worker(const Worker& rhs) : done{rhs.done}, qworker{} {} Worker(Worker &&rhs) : done{rhs.done} { qworker =...
786 просмотров
schedule 18.07.2023

Создание объекта в свободном магазине с использованием нового ClassType(std::move(/*class_object*/))
Вопрос начинающего: Class Quote { public: /* ..... */ virtual Quote* clone() const & {return new Quote(*this);} virtual Quote* clone() && {return new Quote(std::move(*this));} // (***) /* ..... */ } Объекты,...
98 просмотров

Переместить элемент std priority_queue в С++ 11
Минимальный рабочий пример. #include <cassert> #include <list> #include <queue> //#define USE_PQ struct MyClass { const char* str; MyClass(const char* _str) : str(_str) {} MyClass(MyClass&& src) { str =...
5734 просмотров

Принудительное использование конструктора копирования вместо конструктора перемещения
Моя программа дает сбой, а затем удаляются строковые объекты, я полагаю, потому что я использую библиотеку oracle, скомпилированную для VS 2010, в то время как я использую VS 2015. Вот строка, в которой происходит сбой: string f1 =...
397 просмотров
schedule 04.03.2023

Наследование и удаление конструкторов копирования и перемещения
Я хочу иметь класс с наследованием третьего уровня. Я не буду перемещать свои классы или копировать их. На самом деле, они будут созданы только один раз. Я хочу проверить, можно ли удалить перемещение и скопировать конструкторы и назначения, как...
448 просмотров

Как я могу проверить, создается ли конструктор перемещения неявно?
У меня есть несколько классов, для которых я хочу проверить, создается ли конструктор перемещения по умолчанию. Есть ли способ проверить это (будь то утверждение времени компиляции, анализ сгенерированных объектных файлов или что-то еще)?...
5051 просмотров
schedule 17.03.2023

Ни конструктор по умолчанию, ни конструктор копирования не вызываются при использовании анонимного объекта
Ниже приведен фрагмент, предназначенный для тестирования конструкторов. Он был запущен в VS 2015. На мой взгляд, "B b(B())" имеет ту же функцию, что и "B b = B()", однако мой код говорит, что они ведут себя по-разному. Я знаю, что при...
194 просмотров

Дублирование кода C++ в классах с конструкторами перемещения и копирования
Например, класс с двумя конструкторами, один из которых принимает ссылку, а другой принимает строковую ссылку r-значения. class A { public: A(std::string&& str) { Foo foo(std::move(str)); //do something with foo....
344 просмотров

Почему я не могу переместить этот вектор в конструкторе копирования моего пользовательского класса?
class TestClass { public: TestClass(){ cout<<"constructor"<<endl; p = {1,2,3}; cout<<(unsigned int *)(this->p.data())<<endl; } TestClass(const TestClass& test): p(std::move(test.p)) {...
165 просмотров

Конструктор перемещения никогда не вызывается
Я написал следующий фрагмент кода: #define LOG cout << __PRETTY_FUNCTION__ << endl; class MyClass { private: int* ptr; public: MyClass() : ptr(new int(10)) { LOG } ~MyClass() { LOG...
59 просмотров

комбинация конструкторов перемещения/копирования нескольких параметров [дубликаты]
Допустим, у меня есть класс, который при построении принимает два параметра. И мне нужно иметь дело с rvalue/lvale, значит ли это, что я должен написать 4 конструктора? class Test { public: Test(const A& a, const B& b) {} Test(const...
30 просмотров
schedule 15.06.2023

Почему конструкторы копирования и перемещения имеют одинаковое количество копий памяти?
Проблема здесь состоит в том, чтобы понять, был ли вызван конструктор копирования или перемещения при инициализации вектора возвращаемым объектом функции. Проверка mallocs с помощью профилировщика показывает похожие memcopy в обоих случаях. Почему?...
53 просмотров

Исправить утечку памяти в моем собственном двусвязном списке
Я пытаюсь написать свой собственный двусвязный список. Но Valgrind говорит, что у меня тут утечки памяти. Я понятия не имею, что плохого может произойти в строках, которые показывает мне Вальгринд. Не могли бы вы помочь мне? Я пытался изменить...
49 просмотров

Вызов вектора потоков из деструктора
Почему я не могу вызвать свой вектор потоков из деструктора? Есть ли какое-то правило использования деструкторов? void p () { std::cout << "thread running " << std::endl; } class VecThreads // Error: In instantiation of member...
156 просмотров

Почему конструкторы не вызываются?
Здесь C() - это временный объект, который должен был быть создан с помощью конструктора без аргументов, а затем я ожидал вызова для перемещения конструктора. Но ни одного из них не произошло. Может кто-нибудь объяснить, почему? #include...
58 просмотров