Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.90/41: Рейтинг темы: голосов - 41, средняя оценка - 4.90
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1

Как происходит возврат значения по ссылке?

08.03.2015, 18:19. Показов 10380. Ответов 88
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, распишите пожалуйста детально про то, как происходит возврат значения по ссылке.
Можно вот на этом примере:
C++
1
2
3
4
5
alpha& operator=(alpha& a) // перегружаемая операция =
{
   data = a.data;
   return *this;
}
Да и вобще, что есть ссылка? Можно ли ее считать саморазыменовывающимся указателем?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.03.2015, 18:19
Ответы с готовыми решениями:

Возврат значения по ссылке
Долго гуглил, но что-то так и не понял. Почему слева от знака = может использоваться только функция, возвращающая ссылку?

Запутался и уже не понимаю как вообще может работать возврат объекта по ссылке
Здравствуйте, киберфорумчане. Сейчас читаю Г. Шилдта и в его книге рассказывается о побочных эффектах при передаче объектов в функцию и при...

Возврат по ссылке
Приветствую всех! Есть пример из книги Р. Лафоре "Объекто-ориентированное программирование в C++": #include <iostream> ...

88
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
10.03.2015, 23:01
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от daslex Посмотреть сообщение
Я не понял этого довода.
представьте себе гипотетически, что ссылка - это на самом деле указатель, который как известно обладает собственным объектом.
если бы это было бы так, то у такого имени был бы реальный объект.
и размер этого объекта совпадал бы с размером объекта указательного типа, который равен sizeof(void*)
как это и просходит с размерами всех указательных типов.

но вместо этого вы получаете размер равный размеру оригинального объекта.

Цитата Сообщение от daslex Посмотреть сообщение
Почему если речь про саморазыменование, то в первой строчке адрес берется у указателя как у сущности "указатель", а не как у сущности "разыменованный указатель".
речь не идет о саморазыменовывании. речь идет о том, что ссылка - вообще не указатель.
и отличается от укзателя множеством свойств.

вашу фразу:
"адрес берется у указателя как у сущности "указатель"
я вообще не понял. откуда вы все это взяли, и к чему это было сказанно.

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

никто ни у кого никаких адресов не берет.
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
10.03.2015, 23:04
разыменованный указатель - это уже не указатель. Это разыменованный указатель.
Никто в этой теме ни разу не навал ссылку непосредственно указателем.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
10.03.2015, 23:10
Цитата Сообщение от daslex Посмотреть сообщение
разыменованный указатель - это уже не указатель. Это разыменованный указатель.
Никто в этой теме ни разу не навал ссылку непосредственно указателем.
"разыменованный указатель" - это ссылка, если вы вдруг не в курсе.

в теме звучал вопрос: можно ли считать ссылку указателем с автоматическим разыменовыванием.

нет, нельзя. ссылка в принципе не является указателем.
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
10.03.2015, 23:20

Не по теме:

Тут у нас спор такой
Пять - Девять = четыре - А эта четыре то же, что 4?
Нет не 4, потому что 4 - это число, а четыре - строка.



Цитата Сообщение от hoggy Посмотреть сообщение
"разыменованный указатель" - это ссылка
Но Ссылка - это не разыменованный указатель.

Какое странное равновновесие равенства.

Добавлено через 3 минуты
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
Можно ли ее считать саморазыменовывающимся указателем?
а не
Цитата Сообщение от hoggy Посмотреть сообщение
Указателем с автоматическим разыменовыванием
тонкости русского языка..
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
10.03.2015, 23:21
Цитата Сообщение от daslex Посмотреть сообщение
Но Ссылка - это не разыменованный указатель.
Какое странное равновновесие равенства.
"разыменованный указатель" есть результат выражения разыменовывания указателя, результат которого - ссылка.
сама ссылка при этом не является "указателем с автоматическим разыменовыванием".
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
11.03.2015, 00:09
Такая логика кому угодно мозг сломает.
Цитата Сообщение от daslex Посмотреть сообщение
разыменованный указатель - это уже не указатель. Это разыменованный указатель.
Никто в этой теме ни разу не навал ссылку непосредственно указателем.
Цитата Сообщение от hoggy Посмотреть сообщение
"разыменованный указатель" - это ссылка, если вы вдруг не в курсе.
Цитата Сообщение от hoggy Посмотреть сообщение
сама ссылка при этом не является "указателем с автоматическим разыменовыванием".
Я что-то другое сказал?

Добавлено через 21 минуту
Я знаю о чем вы пытаетесь втолковать.

Но тут дело такое. Когда идет начальное знакомство со стеком. Там устаканилось Де-факто: "Считайте стек ящиком, в который вы кладете тарелки. Вот, чтобы достать первую уложенную в ящик, нужно вытащить все тарелки из ящика. Этот ящик - это стек.".

Это же не обозначает, что стек - это именно ящик. Но это не мешает стек поначалу считать таким ящиком.

Разумеется ссылка не указатель. И при использовании ссылки само себя ничего в памяти не разыменовывает. Но если это удобно и облегчает понимание, то почему нельзя?
Да, нужна оговорка и нужно договорить (чем вы старательно занимаетесь), причем обязательно договорить нужное, чтобы не получилось заблуждение.

У разных людей разные типы мышления. Если им проще как-то по своему понимать, то зачем им мешать? Им помогать надо понимать правильно, пусть это даже немного по-ихнему восприятию.
1
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
11.03.2015, 00:36
Цитата Сообщение от daslex Посмотреть сообщение
Я что-то другое сказал?
вы сказали:

Цитата Сообщение от daslex Посмотреть сообщение
Никто в этой теме ни разу не навал ссылку непосредственно указателем.
идет дисскусия на тему: так можно ли считать ссылку указателем с авто-разыменовыванием, или нельзя.
как минимум один человек высказался за, со ссылкой на Страуструпа.

ну так вот, ссылка не является ни "непосредственно указателем", ни "не непосредственно указателем".
не является она и "указателем с автоматическим разыменовыванием"
она вообще не является указателем.

-------------------------------------------------------------------------------
результатом разыменовывания указателя является ссылка.
и это создает иллюзию, что ссылка - это на самом деле указатель,
который автоматически разыменовывается.

более того, компилятор запросто может реализовать механизм ссылки через указатель.
все это дает повод некоторым думать,
что ссылка - это на самом деле действительно сахар над указателем.
при этом они игнорируют "языковые особенности" ссылки,
которые принципиально отличаются от "языковых особенностей" указателей.


вы пишите мне, что не понимаете моих доводов.
не понимаете, почему я показываю различие между ссылкой и указателем.

пишите какие то дураццкие "Пять - Девять = четыре"
и спрашиваете меня, почему я не сравниваю разыменнованый указатель со ссылкой.

на это я могу вам ответить лишь: вы слегка не в теме.
можете перечитать последние странички, и не задавать мне странные вопросы.

Добавлено через 14 минут
Цитата Сообщение от daslex Посмотреть сообщение
Разумеется ссылка не указатель. И при использовании ссылки само себя ничего в памяти не разыменовывает. Но если это удобно и облегчает понимание, то почему нельзя?
Да, нужна оговорка и нужно договорить (чем вы старательно занимаетесь), причем обязательно договорить нужное, чтобы не получилось заблуждение.
ну почему же нельзя. можно. в каких то случаях это действительно облегчает понимание.
однако, совершая подобные допущения, как то забывают добавить, что это - лишь допущение.
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
11.03.2015, 00:51
Цитата Сообщение от hoggy Посмотреть сообщение
как минимум один человек высказался за, со ссылкой на Страуструпа.
можно ли считать - можно. Я это сказал, я не сказал, что это указатель. Не надо мне приписывать не мое. Я сказал, что можно считать, что ссылка - это саморазыменованный указатель.
______________________
Вместо того, чтобы дополнить мое или просто ответить вот этим:
Цитата Сообщение от hoggy Посмотреть сообщение
ну почему же нельзя. можно. в каких то случаях это действительно облегчает понимание.
однако, совершая подобные допущения, как то забывают добавить, что это - лишь допущение.
+приписать пояснение самого допущения, что считать-то так можно, хотя на самом деле оно всё совсем и не так.

Вместо всего одного интересного сообщения, Вами оставленного, у нас получился бесполезный спор на ровном месте. Аж на 4 страниц, т.к. других еще вовлекло.
1
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
11.03.2015, 01:35
Цитата Сообщение от daslex Посмотреть сообщение
Вместо всего одного интересного сообщения, Вами оставленного, у нас получился бесполезный спор на ровном месте. Аж на 4 страниц, т.к. других еще вовлекло.
пожалуй, вы правы.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.03.2015, 01:35

Возврат по ссылке
Вычитал давно еще, что если возвращать статический обьект из метода и присвоить его констатной ссылке то он продолжить жить пока видима эта...

Возврат по константой ссылке
Всем добрый день! И снова я с глупыми вопросами, простите заранее :-const int& mysum(int& num, int incr = 0) { num += incr;...

Наследование, возврат по ссылке..
Есть такое :wall:Я не могу понять, как реализовать :help: :wall:Подсказывать, как это можно сделать. :help: Вот мой #include...

Возврат результата из функции через параметр по ссылке
Здравствуйте уважаемый форумчане! Подскажите, как вернуть результат работы функции по ссылке? Как передавать параметр по ссылке в функцию я...

Как происходит присвоение значения переменной?
Здравствуйте. Какие способы присвоения значения существуют? Расскажите пожалуйста, как присваиваются значения при присвоении из...


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

Или воспользуйтесь поиском по форуму:
89
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки. Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён". Изменено отображение буквы Й. Добавлена. . .
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru