Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 17.04.2016, 12:08   #1
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию Оператор перемещения

Добрый день !
Есть ли у кого-то выражение при котором будет вызван оператор
перемещения =.

это работает как я понял только с временными объектами. ?
RAFA91 вне форума
Старый 17.04.2016, 12:12   #2
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

В отсутствии copy elision:
Код:
std::vector<int> foo()
{
   return std::vector<int>();//move
}


std::vector<int> v;
//...
v = foo();//move

Цитата:
это работает как я понял только с временными объектами. ?
Нет.
Код:
std::vector<int> v1;
//...
std::vector<int> v2;
//...
v2 = std::move(v1);//приводим аргумент к типу std::vector<int>&&
Croessmah вне форума
Старый 17.04.2016, 12:40   #3
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

не ну вы точно на приколе.

Есть ли у кого-то выражение при котором будет вызван оператор
перемещения =.



я что просил код

проще надо объяснять а не на примере хрен знает чего.
RAFA91 вне форума
Старый 17.04.2016, 12:43   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
я что просил код
для справки, выражение это часть кода.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 17.04.2016, 12:43   #5
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Есть ли у кого-то выражение
прикинь, это:
Код:
v = foo();
называется expression statement
Цитата:
проще надо объяснять а не на примере хрен знает чего.
Ну раз просто и без примеров, то так:
если аргумент rvalue (ну или xvalue в конце жизни) и есть соответствующий функционал,
то будет вызвана соответствующая версия оператора. Понятнее?
Croessmah вне форума
Старый 17.04.2016, 12:46   #6
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

под выражением я просил это
Изображения
Тип файла: png geom79atanasyanuch-283.png (26.4 Кб, 63 просмотров)
RAFA91 вне форума
Старый 17.04.2016, 12:48   #7
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
под выражением я просил это
ну так и есть:
c = a + b;
Если a+b в результате дают то, что можно переместить,
то, возможно, будет вызван перемещающий оператор присваивания для c,
конечно, если он есть и аргумент удовлетворяет нужным условиям.
Croessmah вне форума
Старый 17.04.2016, 13:09   #8
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

a + b это временной обьект в результате
Цитата:
Сообщение от RAFA91 Посмотреть сообщение

это работает как я понял только с временными объектами. ?
так зачем тогда эта лапша ?


Цитата:
Сообщение от Croessmah Посмотреть сообщение

Нет.
Код:
std::vector<int> v1;
//...
std::vector<int> v2;
//...
v2 = std::move(v1);//приводим аргумент к типу std::vector<int>&&
RAFA91 вне форума
Старый 17.04.2016, 13:44   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

a+b написали вы вообще-то.

не путайте саму фразу и комментарий к вашему посту.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 17.04.2016, 14:16   #10
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Совместимые со стандартом C++И компиляторы гарантируют, что для временных объектов (r-значений) используется конструктор перемещения, а не конструктор копий, и оператор присваивания при перемещении вместо оператора присвоения копии.
RAFA91 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условный оператор,оператор цикла и массив Klark73 Microsoft Office Excel 1 19.12.2011 17:09
Оператор выбора или условный оператор[Перенесено из JavaSE] merhaba1992 Помощь студентам 1 20.01.2011 17:06
Условный оператор. Оператор выбора. Pascal Сержuk Помощь студентам 4 17.11.2010 12:50
Вычислить используя, оператор цикла for и оператор безусловного пе Knubbe Помощь студентам 1 18.12.2009 10:24