Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
BuGi
24 / 24 / 11
Регистрация: 02.01.2012
Сообщений: 371
1

Возвращаемое ссылочное значение

10.09.2013, 21:01. Просмотров 524. Ответов 10
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
int a = 1;
int& func(){return a;}
void main()
{
    int b = func();
    b+=111;
    cout << b << " " << a; 
    system("pause");
}
C++
1
2
3
4
5
6
7
8
9
int a = 1;
int func(){return a;}
void main()
{
    int b = func();
    b+=111;
    cout << b << " " << a; 
    system("pause");
}
Выводит одно и то же, хотя я рассчитывал увидеть в первом случае 112 112, а не 112 1 (думал, что работает примерно так же, как и в значении параметра). Если не так, то в чем разница между этими двумя вариантами?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2013, 21:01
Ответы с готовыми решениями:

Возвращаемое значение
Как сделать так, что бы в зависимости от подаваемых аргументов, функция...

Возвращаемое значение делигата
Сделал делигат, который принимает до 4-х аргументов функции, которая принимает...

Возвращаемое значение функции
Добрый день. Есть функция: TextString InfoBox::name(unsigned int i) const { ...

Возвращаемое значение функции
Здарвствуйте. Моя задача состоит в написании следующей программы: вычислить...

Реакция на возвращаемое значение
Здравствуйте, Есть программа которая выполняеться и после всех действий...

10
Croessmah
++Ͻ
14630 / 8379 / 1582
Регистрация: 27.09.2012
Сообщений: 20,583
Записей в блоге: 2
Завершенные тесты: 1
10.09.2013, 21:07 2
Цитата Сообщение от BuGi Посмотреть сообщение
увидеть в первом случае 112 112, а не 112 1
С чего вдруг?
Функция вернула ссылку. Потом значение пременной b по сути приравнялось 1, потом прибавили к b 111, получили 112, а переменную a никто не изменял.

C++
1
int & b = func();
А так b - это уже будет ссылка на переменную, функция вернет ссылку на a, значит b тоже станет ссылкой на a
1
User409368
191 / 168 / 32
Регистрация: 09.09.2013
Сообщений: 524
10.09.2013, 21:07 3
Цитата Сообщение от BuGi Посмотреть сообщение
рассчитывал увидеть в первом случае 112 112, а не 112 1
почему? все правильно выводится
C++
1
2
3
4
5
6
7
8
9
10
11
12
int a = 1;
 
int &func() { return a; }
 
 
int main()
{
    int b = func(); // b = 1;
 
    b += 111;       // b = 112
 
    cout << b << " " << a;  // 112 1

переменная a вообще нигде не изменяется
0
BuGi
24 / 24 / 11
Регистрация: 02.01.2012
Сообщений: 371
10.09.2013, 21:36  [ТС] 4
То есть оператор взятия адреса и оператор при объявлении ссылки -- разные вещи?
И что представляет из себя ссылка? То есть моя функция возвращает ссылку, которая преобразовывается в int или сразу инт значение?
0
vodilawofer
29 / 27 / 1
Регистрация: 27.09.2012
Сообщений: 123
10.09.2013, 21:39 5
изменится а вот так
C++
1
2
3
func() = 111;
 
cout << a; // 111
1
Croessmah
++Ͻ
14630 / 8379 / 1582
Регистрация: 27.09.2012
Сообщений: 20,583
Записей в блоге: 2
Завершенные тесты: 1
10.09.2013, 21:40 6
Урок 14 Использование ссылок в C++
1
BuGi
24 / 24 / 11
Регистрация: 02.01.2012
Сообщений: 371
10.09.2013, 21:54  [ТС] 7
Croessmah, я это читал, но все равно остались эти вопросы, в той статье нет на них ответов
0
kamre
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
10.09.2013, 22:41 8
Вот еще интересный вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
int a = 1;
 
int & func() { return a; }
 
int main() {
    auto b = func();
    b++;
    std::cout << "b = " << b << ", a = " << a << std::endl;
}
Возвращаемое ссылочное значение
1
coloc
погромист
411 / 247 / 30
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
10.09.2013, 22:58 9
kamre, интересно... Почему b принимает значение int a не int& ?
0
kamre
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
10.09.2013, 23:03 10
Цитата Сообщение от coloc Посмотреть сообщение
Почему b принимает значение int a не int& ?
http://herbsutter.com/2013/06/07/got...iables-part-1/
1
Olivеr
413 / 409 / 95
Регистрация: 06.10.2011
Сообщений: 832
10.09.2013, 23:09 11
в первом случае, как и во втором, b будет копией а
это если еще не разжевали)
0
10.09.2013, 23:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2013, 23:09

Возвращаемое значение функции
array&amp; array::operator = (const array &amp;q) { if (this != &amp;q) { delete s;...

Классы. Возвращаемое значение
Всем привет:) Помогите исправить ошибки template &lt;class T&gt; class Vector {...

Возвращаемое значение (класс)
class shtraf { public: struct sh { int vel; char number; sh...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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