Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Использование ссылок


Автор: kurlyak 31.8.2021, 14:38
Код


#include <iostream>

int main()
{

    int a = 5;
    int & b = a;

    std::cout << b << std::endl;

    return 0;
}



В чем смысли использования операции взятия адреса & в выражении int & b = a? Можно же просто написать int b = a.

Автор: xvr 1.9.2021, 18:16
Это не взятие адреса, это модификатор типа - ссылка. По сути b тут указатель на a, но все обращения к нему (b) автоматически разименовываются.
Такая семантика.

Цитата(kurlyak @  31.8.2021,  14:38 Найти цитируемый пост)
Можно же просто написать int b = a. 

Можно, но будет не то. Сравните:
Код

#include <iostream>
int main()
{
    int a = 5;
    int & b = a;
    b = 10;
    std::cout << a << std::endl;
    return 0;
}
Выведет 10, а не 5
А если убрать & - то выведет 5

Автор: kurlyak 3.9.2021, 17:29
Спасибо, я посмотрел еще дизассембером код, оказалось что это просто указатель- адрес в памяти, но без использования new это раз, а во вторых это адрес в стеке- т.е. не из кучи, и уничтожается по выходу из функции.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)