Почему ссылка С++ не может быть переопределена?

206
05 апреля 2018, 14:18

Вики содержит информацию о том, что ссылка не может быть переопределена.
Но нижеследующий код исправно работает, причем компиляция проходит успешно с множеством ключей (Wall, Werror, pedantic, ...)
(gcc version 5.4.0 20160609)

#include <iostream>
int main()
{
    int a = 112358;
    int &ref = a;
    std::cout << ref << std::endl;
    int b = 2718;
    ref = b;
    std::cout << ref << std::endl;
    return 0;
}

Вывод:

112358
2718
Answer 1

Дополните ваш код еще одной строчкой:

cout << a << endl;

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

В своем коде вы выполнили, по сути, присваивание

a = b;
Answer 2

В свое время, для собеседований я запомнил одну отличную фразу: "Ссылка это второе имя объекта." В своем примере вы записали b в a, по второму имени a. Из выше написанной фразы даже логично что если во дворе есть Коля, по кличке Череп, будет странно если черепом вдруг станет другой человек, даже если с Колей что-то случиться =/, черепом все равно будет только Коля.

READ ALSO
Как построить пирамиду, применить к ней текстуру и осветить ее?

Как построить пирамиду, применить к ней текстуру и осветить ее?

Как построить пирамиду, применить к ней текстуру и осветить ее? Пишу на Qt

205
CLion jetbrains-toolbox: error trying to exec &#39;cc1plus&#39;

CLion jetbrains-toolbox: error trying to exec 'cc1plus'

При попытке компиляции из терминала CLion получаю сообщение

191
Изображение в матрицу

Изображение в матрицу

Ребят помогите с задачей, нужно взять изображение и перевести его в чёрное белое в виде матрицы 0 или 1, или как яркость вродеКакие библиотеки...

183
Дискретные переменные

Дискретные переменные

Что подразумевается под дискретными переменными в С++

202