25 / 25 / 11
Регистрация: 02.01.2012
Сообщений: 371
1

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

10.09.2013, 21:01. Показов 664. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.09.2013, 21:01
Ответы с готовыми решениями:

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

Возвращаемое значение cos()
Всем доброго времени суток. не могу понять почему cos() возвращает такие значения... ...

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

Возвращаемое значение функции
void tokenize(string str_translate){ char char_translate; strcpy(char_translate,...

10
Don't worry, be happy
17758 / 10526 / 2030
Регистрация: 27.09.2012
Сообщений: 26,502
Записей в блоге: 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
193 / 170 / 32
Регистрация: 09.09.2013
Сообщений: 522
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
25 / 25 / 11
Регистрация: 02.01.2012
Сообщений: 371
10.09.2013, 21:36  [ТС] 4
То есть оператор взятия адреса и оператор при объявлении ссылки -- разные вещи?
И что представляет из себя ссылка? То есть моя функция возвращает ссылку, которая преобразовывается в int или сразу инт значение?
0
29 / 27 / 1
Регистрация: 27.09.2012
Сообщений: 123
10.09.2013, 21:39 5
изменится а вот так
C++
1
2
3
func() = 111;
 
cout << a; // 111
1
Don't worry, be happy
17758 / 10526 / 2030
Регистрация: 27.09.2012
Сообщений: 26,502
Записей в блоге: 1
10.09.2013, 21:40 6
Урок 14 Использование ссылок в C++
1
25 / 25 / 11
Регистрация: 02.01.2012
Сообщений: 371
10.09.2013, 21:54  [ТС] 7
Croessmah, я это читал, но все равно остались эти вопросы, в той статье нет на них ответов
0
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
погромист
414 / 250 / 30
Регистрация: 27.08.2012
Сообщений: 550
10.09.2013, 22:58 9
kamre, интересно... Почему b принимает значение int a не int& ?
0
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
10.09.2013, 23:03 10
Цитата Сообщение от coloc Посмотреть сообщение
Почему b принимает значение int a не int& ?
http://herbsutter.com/2013/06/... es-part-1/
1
414 / 410 / 95
Регистрация: 06.10.2011
Сообщений: 832
10.09.2013, 23:09 11
в первом случае, как и во втором, b будет копией а
это если еще не разжевали)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.09.2013, 23:09
Помогаю со студенческими работами здесь

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

Возвращаемое значение метода
Здравствуйте Подскажите пожалуйста что неправильно указано в в объявлении метода и возвращаемом...

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

Template возвращаемое значение
функция принимает различные типы и делает с ними операцию. И не известно какой тип она должна...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru