Форум программистов, компьютерный форум, киберфорум
Наши страницы

std::move, rvalue reference - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ломбард - вывод табличных данных http://www.cyberforum.ru/cpp-beginners/thread850210.html
Помогите сделать таблицу. Плыз) #include <iostream> #include <fstream> #include <string.h> #include <windows.h> #include <iomanip> using namespace std; const int SZ=1;
C++ По поводу ссылок и конструктора копирования Никак не пойму. При создании объекта и передачи конструктору в качестве параметра объекта другого класса, отладчик показывает что на строчке Data(Element) выполняется конструктор копирования класса... http://www.cyberforum.ru/cpp-beginners/thread850196.html
Двухмерный массив: Написать программу, указывающую для каждого вопроса проценты ответов «Да», «Нет», «не знаю» C++
В двухмерном массиве размером n x m хранятся результаты опроса n человек на m вопросов. Ответами на вопросы являются слова «Да», «Нет», «не знаю». Написать программу, указывающую для каждого...
C++ Работа с графикой
Здравствуйте, помогите разобраться с программой? в результате должны получиться различные графические объекты, перемещающиеся по прямым траекториям с разными случайными векторами скоростей. и...
C++ Сформировать массив по правилу http://www.cyberforum.ru/cpp-beginners/thread850176.html
программа формирования и вывода массива размером 6 на 3, каждые три последовательных элемента в строке которого составлены по следующему правилу: 1-й - равен удвоенному числу, введенному с...
C++ Нужна проверка кода (система обмена сообщениями) есть код C++,компилируется в Mingw/bin при помощи g++. Данный код представляет собой систему обмена сообщениями. Идеальный случай,когда юзер не допускает ошибок при вводе регистрационных данных.... подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1642 / 1014 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
27.04.2013, 19:14
Цитата Сообщение от Olivеr Посмотреть сообщение
Одно копирование? move(s) переместил содержимое в параметр конструктора v, а после из v содержимое скопировалось в член класса vec.
move никуда ничего не переместил, потому что конструктор принимает не rvalue reference, а копию. Так что копирование выполняется дважды.
Цитата Сообщение от Olivеr Посмотреть сообщение
То есть, в последнем варианте не было копирования вообще?
Во втором и третьем вариантах выполняется копирование в параметр (оно выполняется всегда, потому что это указано в описании конструктора, и никакой move этого не изменит), а затем эта копия перемещается в vec.

Добавлено через 1 минуту
Как делать конструктор с перемещением:
C++
1
2
3
4
5
6
class Foo
{
public:
    Foo( vector<string>&& v): vec( move(v) ) {}
    vector<string> vec;
};
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.