4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
||||||||||||||||
1 | ||||||||||||||||
Rvalue и lvalue24.07.2020, 23:54. Показов 3279. Ответов 54
Метки нет (Все метки)
Вот так я возвращаю lvalue ссылку на lvalue объект
0
|
24.07.2020, 23:54 | |
Ответы с готовыми решениями:
54
C++ expressions - rvalue, glvalue, prvalue, xvalue, lvalue, а также rvalue reference: что есть что? RVALUE Ссылка, error: cannot bind non-const lvalue reference of type 'String&' to an rvalue of type 'String'| Проблема с rvalue и lvalue Rvalue и lvalue ссылки |
Комп_Оратор)
|
|
25.07.2020, 00:17 | 2 |
Ссылка на локальный объект, это не то что нужно считать хорошим правилом:
Vanconts, для того чтобы вернуть что нибудь ненужное, нужно сначала получить что нибудь ненужное. Можно получить ссылку из-вне, создать объект в куче, использовать статический локальный объект или даже глобальный... Возврат по значению может трактоваться компилятором по разному. Самое тяжелое - вернёт копию.
0
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
25.07.2020, 01:01 [ТС] | 3 |
IGPIGP, та я просто для примера, то что возврат ссылки на локальный объект это неправильно это понятно.
Вопрос в том что в 3 случае происходит? Если вернёт копию значит эта копия будет rvalue? Почему если написать конутркуторы для этого класса то сработает конутрктор перемещения в месте возврата значения? А не конструктор копирования.
0
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|
25.07.2020, 01:34 | 4 |
Ну потому что так язык работает.
Если вы возвращаете объект по значению и у него доступен конструктор перемещения, то будет перемещение. Потому что потенциально перемещение по крайней мере не хуже, чем копирование, а локальный объект уже все равно никто больше не использует, так почему бы и не попробовать его переместить?
0
|
Вездепух
12812 / 6684 / 1800
Регистрация: 18.10.2014
Сообщений: 16,935
|
|
25.07.2020, 01:38 | 5 |
Объект по значению. Результат вызова такой функции - prvalue.
В языке С++ нет такого понятия как "включить оптимизации" или "выключить оптимизации". Вопрос не имеет смысла, пока речь не идет о конкретном примере вызова такой функции.
2
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
25.07.2020, 11:14 [ТС] | 7 |
DrOffset, но насколько я знаю ссылку на rvalu нельзя инициализировать lvalue, почему тогда конструктор перемещения срабатывает?
Добавлено через 1 час 4 минуты TheCalligrapher, мне бы книжечку какую-то чтобы разобраться во всех этих rvalue xvalue prvalue и что там еще есть... Подскажете ?
0
|
"C with Classes"
|
|
25.07.2020, 12:47 | 8 |
Сообщение было отмечено Vanconts как решение
Решение
Vanconts, давай я подскажу, читать по порядку:
http://rsdn.org/article/cpp/lvalue.xml https://rsdn.org/article/cpp/Cpp11NewStd.xml https://habr.com/ru/post/226229/ https://habr.com/ru/post/322132/ и перечитывать пока не наступит эйфория. Добавлено через 5 минут еще у Мейерса в книге https://coollib.net/b.usr/Skot... %2B%2B.pdf расписано более имение, советую все прочитать, а по твоему вопросу Глава 5. Добавлено через 5 минут они тебе не подскажут книгу где это расписано, потому что у них это в крови.
2
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
25.07.2020, 12:55 [ТС] | 9 |
0
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|
25.07.2020, 13:08 | 10 |
Что за ерунда?
Вот именно книгу Мейерса сначала и нужно читать по этой теме. А потом уже всякие статьи и т.п.
2
|
Croessmah
|
25.07.2020, 13:14
#12
|
0
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
25.07.2020, 17:14 [ТС] | 14 |
_stanislav, в книге той которую Вы мне посоветовали там о move семантике в основном, там нету о prvalue и тд
0
|
"C with Classes"
|
|
25.07.2020, 17:24 | 16 |
0
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
||||||
25.07.2020, 17:45 [ТС] | 18 | |||||
_stanislav, Вот есть lvalue - это выражения которые имеют и адрес и значение, rvalue - выражения без адреса.
Вроде бы понятно , литерал не будет иметь адреса в памяти процеса, но если взять анонимный объект
Добавлено через 1 минуту И еще почему ссылки это всегда lvalue?
0
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
25.07.2020, 17:51 [ТС] | 20 |
0
|
25.07.2020, 17:51 | |
25.07.2020, 17:51 | |
Помогаю со студенческими работами здесь
20
Непонятное поведение rvalue/lvalue Почему i++ это rvalue, а ++i lvalue? Что такое rvalue и lvalue Семантика перемещения rvalue\lvalue ссылок Lvalue, xvalue, glvalue, rvalue, prvalue Rvalue, lvalue, xvalue, prvalue, glvalue Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику
Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
|
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику
В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
|
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера
Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
|
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды
В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
|
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике
В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
|
Информационное моделирование
hw_wired 28.01.2025
Введение в информационное моделирование
В современном мире информационное моделирование стало неотъемлемой частью научной, образовательной и профессиональной деятельности. Это мощный инструмент. . .
|
Объекты и их имена
hw_wired 28.01.2025
Введение: Основы объектного подхода и их роль в информатике
В современном мире информационных технологий объектный подход стал фундаментальным принципом организации и обработки информации. Этот. . .
|
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации
В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
|
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира
В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
|
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин
История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
|
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией
В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
|
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации
В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
|