Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Ferrari F1
=^_^=
550 / 437 / 93
Регистрация: 27.01.2015
Сообщений: 2,551
Записей в блоге: 1
Завершенные тесты: 1
#1

Ссылки на r-значения - C++

04.08.2016, 09:33. Просмотров 496. Ответов 21
Метки нет (Все метки)

Дарова!
Знакомлюсь с r-value reference и как то трудно получается полностью вникнуть в них.
Так, например, возникает ошибка в main, но ведь ссылка может выступать как l значение
C++
1
2
3
4
5
6
7
8
9
10
int&& func()
{
    int i(1);
    return i + 2;
}
 
int main()
{
    func() = 8;
}
Или даже так, все равно то же самое
C++
1
2
3
4
5
6
7
8
9
10
int&& func()
{
    int i(1);
    return std::move(i + 2);
}
 
int main()
{
    func() = 8;
}
Добавлено через 25 минут
Или вот еще вопрос, верно ли, что в этом коде не происходит лишних копирований, т.е.
1) сперва вызывается func
2) потом в func вычисляется значение выражения i + 2
3) по завершению вычисления создается временная безымянная переменная, которая хранит результат
4) эта безымянная переменная инициализирует параметр функции move
5) move возвращает r-value ссылку
6) func возвращает r value ссылку, полученную как результат move

7) в main результат вызова func в контексте инициализации интерпритируется как r-value типа int
8) x связывается с этим r-value
C++
1
2
3
4
5
6
7
8
9
10
int&& func()
{
    int i(1);
    return std::move(i + 2);
}
 
int main()
{
    auto&& x = func();
}
Добавлено через 3 минуты
еще 1 вопрос, почему компиль выдает варнинг в этом коде
warning C4172: возвращение адреса локальной или временной переменной
C++
1
2
3
4
5
6
7
8
9
10
int&& func()
{
    int i(1);
    return i + 2; // ИЗМЕНЕНИЯ ПРОИЗОШЛИ ЗДЕСЬ
}
 
int main()
{
    auto&& x = func();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2016, 09:33     Ссылки на r-значения
Посмотрите здесь:

operator= возврат значения и просто ссылки - C++
Здорова господа! Снова пытаюсь чуток в С++ разобраться, с перегрузкой операций, снова ничерта непонятно. от допустим класс class...

Возвращение ссылки на указатель использование её как левостороннего значения - C++
Есть шаблон: //------------------------------------------------------- template<class T> struct ts { private: void* data; ...

Как лучше передавать значения в функцию? Ссылки vs указатели - C++
Всем доброго времени суток. Уважаемые гуру, подскажите пожалуйста, как лучше передавать значения в функцию, через указатель или ссылку? И...

Возвращение значения в функции, ссылки, вычислить корни квадратного уравнения - C++
Определить функцию вычисления корней квадратного уравнения. Функция должна возвращать значение 1, если корни найдены, значение 0, если...

Главная функция (вводит некоторые значения и передает их и ссылки на некоторые переменные в функцию) - C++
Написать главную функцию, которая вводит некоторые значения и передает их и ссылки на некоторые переменные в функцию. Получив результаты...

Для каждого значения A вывести все значения функции попдающие в интервал от C до D - C++
Мне дали вот такое условие задачи: Y=f(x; a) X1<=x<=x2, x3 A1<=a<=a2, a3 Для каждого значения A вывести все значения функции...

Вывести индексы тех элементов, значения которых больше значения предыдущего - C++
Прошу,помогите решить ) Дан массив целых чисел, состоящий из 10 элементов. Заполнить его с клавиатуры. Вывести индексы тех элементов,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ferrari F1
=^_^=
550 / 437 / 93
Регистрация: 27.01.2015
Сообщений: 2,551
Записей в блоге: 1
Завершенные тесты: 1
04.08.2016, 20:04  [ТС]     Ссылки на r-значения #21
HelicopterK52, Липпман
https://www.ozon.ru/context/detail/id/26348781/
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.08.2016, 20:19     Ссылки на r-значения
Еще ссылки по теме:

Найти элементы массива значения которых больше значения их индексов - C++
Даны целые числа аi а2,..., а„. Вывести на печать только те числа, для которых ai>i

Напишите программу, которая выдает запрос на ввод значения часов и значения минут. - C++
Условие: Напишите программу, которая выдает запрос на ввод значения часов и значения минут. Функция main() должна передать эти два...

Аргумент Х изменяется от начального значения 6 до конечного значения 8 с шагом 2, вектор А состоит из 6 элементов - C++
Аргумент Х изменяется от начального значения 6 до конечного значения 8 с шагом 2, вектор А состоит из 6 элементов ...

Заменить все значения элементов матрицы нулями, значения которых меньше числа k - C++
Дан двумерный массив n*m и число k. Значения элементов вводятся с клавиатуры. С клавиатуры вводится число k. Заменить все значения...

Подсчитать количество элементов последовательности, значения которых больше значения предыдущего элемента - C++
Дана последовательность из n действительных чисел.( Задачу нужно решить, используя одномерный массив) Подсчитать количество элементов,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ct0r
Игогошка!
1768 / 670 / 42
Регистрация: 19.08.2012
Сообщений: 1,284
Завершенные тесты: 1
04.08.2016, 20:19     Ссылки на r-значения #22
Ferrari F1, http://thbecker.net/articles/rvalue_...ection_01.html
Если картина не прояснится, то бросай плюсы
Yandex
Объявления
04.08.2016, 20:19     Ссылки на r-значения
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru