Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ohos
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 9
#1

Почему для обозначения ссылок используется именно символ &? - C++

09.07.2014, 21:21. Просмотров 408. Ответов 9
Метки нет (Все метки)

Почему для обозначения ссылок используется именно символ &, а не какой-то другой? Ведь сам по себе символ & является оператором получения адреса

C++
1
2
int a = 3;//&a тут & будет уже оператором получения адреса
int &b = a;// &b имя ссылки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2014, 21:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему для обозначения ссылок используется именно символ &? (C++):

Нюансы синтаксиса: где, как и для чего используется && - C++
Когда применяется ссылка на ссылку? В STL есть классы, конструкторы которых принимают ссылку на ссылку. Попробовал понять для чего они...

Почему friend ostrem& operator <<(ostream& outs, const Rational&); - invalid function declaration? - C++
Пытаюсь скомпилировать программу пишет friend ostrem&amp; operator &lt;&lt;(ostream&amp; outs, const Rational&amp;); - invalid function declaration. ...

Почему в С++ это сделано именно так? Объяснение для НЕ программиста - C++
В этой теме хотелось бы задавать &quot;тупые&quot; вопросы по С++ и получить ответы и объяснения на нормальном человеческом языке, понятном НЕ...

Как проверить, принадлежит ли символ заданному диапазону m...n, кроме if (c <= n && c >= m) ? - C++
есть какая-нибудь более короткая запись для проверки, принадлежит ли символ заданному диапазону m...n, кроме if (c &lt;= n &amp;&amp; c &gt;= m) ...

Почему в некоторых случаях используется массив для хранения стека, а в некоторых нет? - C++
Почему в некоторых случаях используется массив для хранения стека ,а в некоторых нет

Почему в выражении нельзя использовать запятую вместо && - C++
Привет всем, у меня такой вопрос: Почему в выражении for (i=0; i &lt; *k &amp;&amp; strcmp((base+i)-&gt;fam,fam); i++); вместо &quot;&amp;&amp;&quot;...

9
Kastaneda
09.07.2014, 21:36
  #2

Не по теме:

Уважаемый ohos, Ваш вопрос перенаправлен на https://twitter.com/stroustrup, пожалуйста, ожидайте ответа.

0
Nick Alte
Эксперт С++
1644 / 1016 / 120
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
09.07.2014, 22:04 #3
Главная Вселенская Мудрость: "Всего на всех не хватает, потому что всех много, а всего мало". Спасибо Андрею Кнышеву за чеканную формулировку.
В данном случае символов не хватает на все операции, и приходится совмещать. Так что знаку & приходится работать оператором взятия адреса, модификатором ссылки и даже побитовым AND. Другим знакам тоже нелегко.
0
Tulosba
:)
Эксперт С++
4619 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
09.07.2014, 23:27 #4
Небольшая вырезка из книги "Дизайн и эволюция C++" может быть прольёт свет на вопрос "почему":
1
Миниатюры
Почему для обозначения ссылок используется именно символ &?  
Renji
2087 / 1445 / 331
Регистрация: 05.06.2014
Сообщений: 4,176
10.07.2014, 10:17 #5
В данном случае символов не хватает на все операции, и приходится совмещать.
#, @ и $ вроде как пока не использованы. И не станут создавать неоднозначности A&B в которой без контекста не поймешь то ли это переменную объявили, то ли поразрядное И выполнили.
0
Tulosba
:)
Эксперт С++
4619 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
10.07.2014, 10:29 #6
Цитата Сообщение от Renji Посмотреть сообщение
#
препроцессор
Цитата Сообщение от Renji Посмотреть сообщение
$
допускается в именах идентификаторов

Добавлено через 1 минуту
Цитата Сообщение от Renji Посмотреть сообщение
в которой без контекста не поймешь
А зачем требовать понимания без контекста? Главное, чтобы в контексте не было неоднозначностей.
0
Renji
2087 / 1445 / 331
Регистрация: 05.06.2014
Сообщений: 4,176
10.07.2014, 10:40 #7
А зачем требовать понимания без контекста? Главное, чтобы в контексте не было неоднозначностей.
Затем, что в потрохах шаблона компилятор не видит весь контекст и начинает ругаться "или typename A&B, или я это читать не буду".
0
Tulosba
:)
Эксперт С++
4619 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
10.07.2014, 10:48 #8
Цитата Сообщение от Renji Посмотреть сообщение
"или typename A&B, или я это читать не буду".
Это Вас напрягает? Язык не совершенен, но вводить под каждую новую сущность свой оператор тоже не панацея. К тому же накладывается требование совместимости со старым кодом.
0
Renji
2087 / 1445 / 331
Регистрация: 05.06.2014
Сообщений: 4,176
10.07.2014, 10:56 #9
Вообще да, это несколько раздражает. Не столько необходимостью подписывать ключевое слово, сколько неочевидностью грабель. Вне шаблона то тот же самый код будет работать и без typename.
0
DrOffset
7506 / 4502 / 1023
Регистрация: 30.01.2014
Сообщений: 7,362
10.07.2014, 15:17 #10
Цитата Сообщение от Renji Посмотреть сообщение
Вообще да, это несколько раздражает.
Дело привычки.
0
10.07.2014, 15:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2014, 15:17
Привет! Вот еще темы с ответами:

Именно в каких ситуациях используется "virtual" ? - C++
Привет всем. Я знаю, что с помощью virtual происходит полиморфизм. Но кто может показать еффективность ее (virtual) использования? ...

Объясните почему не срабатывает И (&&) - C++
Есть задача нахождения наибольшего общего делителя для двух чисел. Программу я написал.Но почему когда я указывал в цикле И (&amp;&amp;), цикл...

Почему именно С++? - C++
Всем привет. Кто может объяснить, почему везде востребованы программисты С++? Как эти программисты пишут оконные приложения, если все...

Почему именно C#? - C++
В конечном итоге нужно программировать на 1С, но так как репетитора по 1С найти не реально, решила изучить какой-нибудь-любой язык ООП, в...


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

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

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