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

Механизм возврата ссылки на переменную - C++

Восстановить пароль Регистрация
 
limelight
7 / 7 / 0
Регистрация: 17.04.2010
Сообщений: 112
02.05.2010, 13:21     Механизм возврата ссылки на переменную #1
Здравствуйте!
Не совсем понятен механизм возвращения из функции типа "ссылка на.." и использование функции в выражениях в качестве левого, от знака равно операнда. трудности с пониманием и восприятием.
может ли кто нибудь объяснить что это, с чем едят, как происходит и зачем применяют???

п.с.
как я понимаю:
например есть такой код
C
1
2
3
4
5
int x;
int& retx()
{
   return x;
}
Из этой функции видно, что тип возвращаемого значения - int&.
теперь у нас появляется возможность записать вот так: retx() = 101; в рез-те чего станет x = 101.
как я понимаю механизм: эта функция возвращает ссылку на переменную, указанную после return (в нашем случае это x) Т.е. выполнилась у нас функция и готова вернуть икс. если мы употребим retx() справа от равно то получим как бы обычный вариант употребления функций. если употребим слева - то получим возможность произвести присваивание, так, как я показал выше. отсюда напрашивается вывод - возвращение ссылки - способ предназначеный для возможности использования функции слева. но зачем это нужно и где полезно?? для чего это придумали?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2010, 13:21     Механизм возврата ссылки на переменную
Посмотрите здесь:

C++ В чем разница между exit(код возврата) и ExitProcess (код возврата)?
функция возврата булевого значения C++
Записать день в переменную d,месяц в переменную m, год в переменную y C++
C++ Метод возврата текущего значения
Создать функцию нахождения площади поверхности и объема цилиндра. Для возврата значений использовать ссылки. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
02.05.2010, 13:26     Механизм возврата ссылки на переменную #2
Представь массив: операция [i] - возвращает ссылку на элемент, поэтому можно
спокойно присвоить значение любому элементу массива..
Возвращение значения(не ссылки), не позволяет делать = для операции [i] или функции, потому как это не корректно, то есть куда ты этим = хочешь присвоить???

Добавлено через 30 секунд
Вне куда...
limelight
7 / 7 / 0
Регистрация: 17.04.2010
Сообщений: 112
02.05.2010, 14:25  [ТС]     Механизм возврата ссылки на переменную #3
ясно.а мои умозаключения насколько верны?
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
02.05.2010, 15:33     Механизм возврата ссылки на переменную #4
Твои заключения верны, на сколько это судить не мне.

Ссылка должна ссылается(желательно): на то что существует еще до вызова функции...
X существует до вызова retx: он глобальный.

Возврат ссылки нужен: обычно, просто для обращения к памяти,
то есть автоматическое разыменование: перед функцией или операцией не надо писать *
Если бы возвращался просто адрес через указатель, пришлось бы писать *

Добавлено через 9 минут
Вот тебе для разнообразия как еще допустимо:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
int x=100;
int* retx();
 
int main(){
*retx()=10;
cout<<x;
 
return 0;
}
 
 
int* retx()
{
return &x;
}
limelight
7 / 7 / 0
Регистрация: 17.04.2010
Сообщений: 112
02.05.2010, 15:43  [ТС]     Механизм возврата ссылки на переменную #5
До указателей пока не дошел) Но в общих чертах все понял
Спасибо.
Yandex
Объявления
02.05.2010, 15:43     Механизм возврата ссылки на переменную
Ответ Создать тему
Опции темы

Текущее время: 05:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru