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

Move конструктор && - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить, есть ли в массиве значение, равное (min +max) / 2 http://www.cyberforum.ru/cpp-beginners/thread1021644.html
Здравствуйте , решите пожалуйста задачку) Поступила на заочку , а там ничего не объясняют...как учиться ума не приложу( такую дали : Определить, есть ли в массиве L значение, равное (min +max) /...
C++ Постройте таблицу значений функции с помощью функции Постройте таблицу значений функции y=f(x) для Х€ с шагом h. Если в некоторой точке х функция не определена, то выведите на экран сообщение об этом. Замечание. Для решения задачи использовать... http://www.cyberforum.ru/cpp-beginners/thread1021639.html
C++ Определить процедуру, позволяющую распознавать полные квадраты
Дано натуральное число N. Среди чисел 1, 2, 3, …., N найти все, которые можно представить в виде суммы квадратов двух натуральных чисел. (Определить процедуру, позволяющую распознавать полные...
C++ Изобразите скатывание шарика
Изобразите скатывание шарика по кривой, заданной уравнением y = (x-1)2 + ex на интервале . Как только шарик достигает конца кривой, он начинает двигаться в обратном направлении. Программа...
C++ Постройте график функции http://www.cyberforum.ru/cpp-beginners/thread1021631.html
Постройте график функции y = (x-1)2 + ex на интервале . Обозначьте оси координат, нарисуйте координатную сетку, укажите цены делений и пределы изменения координат x и y. Оси координат нарисуйте...
C++ Определить сколько раз встречается максимальная цифра в числе Дано натуральное число. Определить, сколько раз в нем встречается максимальная цифра (например, для числа 132233 ответ равен 3, для числа 46336 – 2). подробнее

Показать сообщение отдельно
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
01.12.2013, 08:29
Цитата Сообщение от nexen Посмотреть сообщение
Отсюда и вопрос, если я имею конструктор:
Код C++
1
T(const int&& a, const int&& b, const int&& c);
и передаю параметры так:
Код C++
1
T d(x * y, y, z);
- сработает ли это?
Нет, т.к. y и z - lvalue.
Цитата Сообщение от nexen Посмотреть сообщение
Или же если стоит &&, значит передавать можно только временный объект?
Именно так.
Цитата Сообщение от nexen Посмотреть сообщение
И да, кстати, чтобы параметр int&& param перекинуть в объект вместо поля int field мне достаточно сделать field = param? Или нужно какой-то там std::move использовать?
Нужен move; вообще ссылка на rvalue - это lvalue.
C++
1
T(int && param) : field(std::move(param)) {}
Добавлено через 5 минут
Цитата Сообщение от nexen Посмотреть сообщение
Неужели теперь, если я хочу иметь код более оптимизированный, мне придется делать аж 3 конструктора?
Не 3, а больше - накаждую комбинацию const& и && ) Либо один шаблонный конструктор, навроде
C++
1
2
3
4
5
6
template<typename A, typename B, typename C>
T(A && a, B && b, C && c)
      : a(std::forward<A>(a))
      , b(std::forward<B>(b))
      , c(std::forward<C>(c))
      {}
Тогда если параметр lvalue (int), то имеем A && -> int & && -> int &. Если rvalue - то A && -> int &&.

Добавлено через 5 минут
Вот в описании std::forward аналогичный пример кстати: http://en.cppreference.com/w/cpp/utility/forward .
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.