|
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
|
||||||
Возвращение ссылки из функции19.06.2016, 01:02. Показов 5876. Ответов 53
Метки нет (Все метки)
Привет, я немного не понимаю, почему в следующем коде в строках 16-17 надо возвращать именно ссылку:
int&, а просто int, присваивание в строке 29 не работает? Ведь мы возвращаем член класса.PS если возвращать не по ссылке - будет возвращаться rvalue? Почему? Это же член класса.
0
|
||||||
| 19.06.2016, 01:02 | |
|
Ответы с готовыми решениями:
53
Возвращение ссылки на локальную переменную |
| 19.06.2016, 01:09 | |
|
Вообще я ни разу не ООП-фан (не, идеи Аллена Кея мне нравятся), я имею в виду эту паранойю с инкапсуляцией, но присваивание по геттеру - это имхо сильно
Сделать приватный член, не задать его сеттер, возвращать по геттеру ссылку на него и изменять его значение через геттер - это впечатляет!
0
|
|
|
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
|
|
| 19.06.2016, 01:13 [ТС] | |
|
_Ivana, это просто демонстрация того, что мне не понятно. Я понимаю, что есть сетеры для подобных вещей.
0
|
|
| 19.06.2016, 01:23 | ||||||
|
С позиций дилетанта могу сказать, что просто инт без ссылки ты возвращаешь не член класса, а его значение, как значение примитивного типа.
И если ты напишешь
0
|
||||||
|
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
|
|
| 19.06.2016, 01:27 [ТС] | |
|
_Ivana, можно сказать, что возвращая что-либо по ссылке, я возвращаю lvalue? А без - rvalue? Это единственное, что укладывается у меня в голове пока что...
Добавлено через 2 минуты А в случае 16-й строки у меня вообще временный объект возвращается, верно?
0
|
|
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||
| 19.06.2016, 01:27 | ||
|
PS. Почему нету смайлика рука лицо на этом форуме??? Как мне теперь общаться с собакой в шапке???
0
|
||
| 19.06.2016, 01:33 | |
|
Не знаю ничего про lvalue и rvalue, но живу в заблуждении, что примитивные типы передаются и возвращаются по значению, и чтобы было по ссылке надо это явно указывать, а объекты - по ссылке, и чтобы было по значению надо копировать. В той же джаве объекты передаются по неглубокой копии, а в шарпе есть ключевые слова для управления как передавать. Но конечно спецы С++ расскажут это точнее. Я до сих пор не понимаю ссылки в плюсах
![]() Добавлено через 2 минуты rikimaru2013, есть: Просто раньше наверное у тебя не было повода для него
1
|
|
|
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
|
|
| 19.06.2016, 01:35 [ТС] | |
|
rikimaru2013, просто хотел по-быстрому как-нибудь изменить данные в векторе
![]() Добавлено через 2 минуты rikimaru2013, или вы тоже про сетеры сейчас будете говорить?
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
| 19.06.2016, 01:50 | |
|
0
|
|
|
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
|
|
| 19.06.2016, 01:51 [ТС] | |
|
Можем ли мы отойти от тем инкапсуляции, сетеров, гетеров и т.д. Я просто так функцию назвал, я не хотел чего-либо инкапсулировать хардкорно. Объясните, пожалуйста, как эти ссылки вообще работают при возврате из подобной функции.
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
| 19.06.2016, 01:53 | |
Сообщение было отмечено meJevin как решение
Решение
1
|
|
|
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
|
|
| 19.06.2016, 01:55 [ТС] | |
|
Renji, аааа, теперь это делает смысл. Спасибо огромное.
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 19.06.2016, 06:01 | ||
|
1
|
||
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
| 19.06.2016, 06:14 | |
|
Mr.X, тогда получается, что вернуть объект можно только в качестве ссылки(псевдоним имени объекта) - другие вещи не возвращение объекта)))
Указатель? Адрес(переменная) на объект Копия? Это уже клон, а не сам объект и воздействие на один не другой не влияет ) (с) с ув. придира
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 19.06.2016, 06:48 | ||
|
0
|
||
| 19.06.2016, 07:11 | ||
|
0
|
||
|
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
|
||||||
| 19.06.2016, 07:57 [ТС] | ||||||
|
Mr.X, понял. Получается, когда я в строке 17 возвращаю просто
int, у меня код в что-то подобное превращается?
имплиситли, оф корс Добавлено через 16 секунд А потом такие дауничи, как я, путаются в ссылках
0
|
||||||
|
Неэпический
|
|||
| 19.06.2016, 08:01 | |||
![]() И с точки зрения языка, ссылки - это псевдонимы. Как будет реализовано - без разницы. Это всё неоднократно обсуждалось на форуме.
0
|
|||
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
| 19.06.2016, 13:55 | |
|
Croessmah, если сказать адрес таксисту, он довезёт вас к дому, но это не значит, что адрес == дом. То бумажка на 4 байта, а то гора кирпичей.
P.S. Если вы решили забрать у меня звание придиры в этой теме - у вас ничего не получится!!!!111111
0
|
|
| 19.06.2016, 13:55 | |
|
Помогаю со студенческими работами здесь
20
Возвращение ссылки на локальный объект Возвращение ссылки на указатель использование её как левостороннего значения Возвращение ссылки или указателя на закрытый элемент класса. Возвращение результата функции bool и использование его в функции main() Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|