Вопросы по теме 'move-constructor'
Переместить конструктор/оператор=
Я пытаюсь узнать о новой функции C++, а именно о перемещении конструктора и назначении X::operator=(X&&) , и я нашел интересный пример , но единственное, что я даже не понимаю, но больше не согласен, это одна строка в операторе перемещения и...
1510 просмотров
schedule
17.06.2023
Использование семантики перемещения с std::pair или std::tuple
Предположим, вы хотите воспользоваться преимуществами семантики перемещения, но один из ваших перемещаемых классов должен быть частью класса std::pair . Цель состоит в том, чтобы создать функцию, которая возвращает std::pair , которую можно...
14349 просмотров
schedule
13.06.2022
Используйте 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 просмотров
schedule
13.08.2022
Переместить элемент 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 просмотров
schedule
27.10.2022
Принудительное использование конструктора копирования вместо конструктора перемещения
Моя программа дает сбой, а затем удаляются строковые объекты, я полагаю, потому что я использую библиотеку oracle, скомпилированную для VS 2010, в то время как я использую VS 2015. Вот строка, в которой происходит сбой:
string f1 =...
397 просмотров
schedule
04.03.2023
Наследование и удаление конструкторов копирования и перемещения
Я хочу иметь класс с наследованием третьего уровня. Я не буду перемещать свои классы или копировать их. На самом деле, они будут созданы только один раз. Я хочу проверить, можно ли удалить перемещение и скопировать конструкторы и назначения, как...
448 просмотров
schedule
30.07.2023
Как я могу проверить, создается ли конструктор перемещения неявно?
У меня есть несколько классов, для которых я хочу проверить, создается ли конструктор перемещения по умолчанию. Есть ли способ проверить это (будь то утверждение времени компиляции, анализ сгенерированных объектных файлов или что-то еще)?...
5051 просмотров
schedule
17.03.2023
Ни конструктор по умолчанию, ни конструктор копирования не вызываются при использовании анонимного объекта
Ниже приведен фрагмент, предназначенный для тестирования конструкторов. Он был запущен в VS 2015.
На мой взгляд, "B b(B())" имеет ту же функцию, что и "B b = B()", однако мой код говорит, что они ведут себя по-разному.
Я знаю, что при...
194 просмотров
schedule
12.04.2022
Дублирование кода C++ в классах с конструкторами перемещения и копирования
Например, класс с двумя конструкторами, один из которых принимает ссылку, а другой принимает строковую ссылку r-значения.
class A {
public:
A(std::string&& str) {
Foo foo(std::move(str));
//do something with foo....
344 просмотров
schedule
25.10.2022
Почему я не могу переместить этот вектор в конструкторе копирования моего пользовательского класса?
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 просмотров
schedule
13.05.2023
Конструктор перемещения никогда не вызывается
Я написал следующий фрагмент кода:
#define LOG cout << __PRETTY_FUNCTION__ << endl;
class MyClass
{
private:
int* ptr;
public:
MyClass()
: ptr(new int(10))
{
LOG
}
~MyClass()
{
LOG...
59 просмотров
schedule
29.12.2022
комбинация конструкторов перемещения/копирования нескольких параметров [дубликаты]
Допустим, у меня есть класс, который при построении принимает два параметра. И мне нужно иметь дело с rvalue/lvale, значит ли это, что я должен написать 4 конструктора?
class Test {
public:
Test(const A& a, const B& b) {}
Test(const...
30 просмотров
schedule
15.06.2023
Почему конструкторы копирования и перемещения имеют одинаковое количество копий памяти?
Проблема здесь состоит в том, чтобы понять, был ли вызван конструктор копирования или перемещения при инициализации вектора возвращаемым объектом функции. Проверка mallocs с помощью профилировщика показывает похожие memcopy в обоих случаях. Почему?...
53 просмотров
schedule
23.07.2022
Исправить утечку памяти в моем собственном двусвязном списке
Я пытаюсь написать свой собственный двусвязный список. Но Valgrind говорит, что у меня тут утечки памяти. Я понятия не имею, что плохого может произойти в строках, которые показывает мне Вальгринд. Не могли бы вы помочь мне?
Я пытался изменить...
49 просмотров
schedule
11.03.2023
Вызов вектора потоков из деструктора
Почему я не могу вызвать свой вектор потоков из деструктора? Есть ли какое-то правило использования деструкторов?
void p ()
{
std::cout << "thread running " << std::endl;
}
class VecThreads // Error: In instantiation of member...
156 просмотров
schedule
05.11.2022
Почему конструкторы не вызываются?
Здесь C() - это временный объект, который должен был быть создан с помощью конструктора без аргументов, а затем я ожидал вызова для перемещения конструктора. Но ни одного из них не произошло. Может кто-нибудь объяснить, почему?
#include...
58 просмотров
schedule
07.06.2023