Информация об изменениях

Сообщение Re[4]: Вопрос про ссылки - что бы сломалось, если... от 10.07.2024 13:29

Изменено 10.07.2024 13:42 rg45

Re[4]: Вопрос про ссылки - что бы сломалось, если...
Здравствуйте, andrey.desman, Вы писали:

AD>Здравствуйте, rg45, Вы писали:


BFE>>>Ссылка — это второе имя переменной (в отличии от ссылочного типа). В map не кладут имена переменных. В map кладут значения переменных.

R>>Ну вот зачем ты это пишешь? Чтобы еще больше запутать его? А когда ссылка является результатом выражения, например std::max(42, 43) где там какое имя?

AD>Так это тип, а не ссылка.


Конечно же, у результата есть тип. Но есть же и сам результат — та самая ссылка. Есть временный объект, к которому привязана ссылка. И это можно даже визуализировать:

std::cout << std::max(42, 43) << std::endl;


Можно еще добавить примеров:

auto ptr = std::make_unique<int>(42);
std::cout << *ptr << std::endl;


Имя есть у переменной. Но переменная — это не единственная форма существования ссылок.
Re[4]: Вопрос про ссылки - что бы сломалось, если...
Здравствуйте, andrey.desman, Вы писали:

AD>Здравствуйте, rg45, Вы писали:


BFE>>>Ссылка — это второе имя переменной (в отличии от ссылочного типа). В map не кладут имена переменных. В map кладут значения переменных.

R>>Ну вот зачем ты это пишешь? Чтобы еще больше запутать его? А когда ссылка является результатом выражения, например std::max(42, 43) где там какое имя?

AD>Так это тип, а не ссылка.


Конечно же, у результата есть тип. Но есть же и сам результат — та самая ссылка. Есть временный объект, к которому привязана ссылка. И это можно даже визуализировать:

std::cout << std::max(42, 43) << std::endl;


Можно еще добавить примеров:

auto ptr = std::make_unique<int>(42);
std::cout << *ptr << std::endl;

Выражение *ptr здесь вычисляется в ссылку (и конечно же, у этой ссылки есть тип — int&).

Имя есть у переменной. Но переменная — это не единственная форма существования ссылок.