![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| feodorv |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
Бог ты мой, мало кто не знаком с этим примером, и что он с собой несет; неважно как он при этом выглядит, хоть просто i = i++. Я же хотел вернуть Вас в русло темы, не более. Если уж Вы такой занудный, то давайте я начну.
И тут самое время задуматься над тонкостями rvalue/lvalue и &&. Но это уж Вы как-нибудь сами. Итого: хотя я и согласен с точкой зрения xvr, но когда я всё это описывал, моя уверенность в её справедливость сильно пошатнулась))) -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||||
|
|||||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
Ещё. Никогда над этим не задумывался)))
Это сообщение отредактировал(а) feodorv - 21.9.2015, 09:35 -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| drug007 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 3.11.2011 Репутация: нет Всего: 1 |
||||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
_zorn_, в вашем примере не только нет ссылок, но и вообще может быть что угодно в зависимости от типа i.
а то, что код не компилируется - понятно, лексический анализатор жаден, и код интерпретируется как i++ ++ +i, а постфиксные выражения группируются слева направо, так что для скалярных типов будет попытка изменить rvalue основной "тонкостью" в ссылках vs указателях думаю стоит считать разницу в смысле выражений:
что является следствием главной особенности ссылки: она связывается со ссылаемым объектом единожды в момент инициализации. Добавлено через 5 минут и 27 секунд имхо удобно говорить о ссылках как об алиасах (альтернативных именах) уже объявленных переменных, тогда становится понятно и как работает, и искушения сравнивать с указателями не возникает. в этом русле и понимание rvalue reference мне кажется проще. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Давайте переформулируем: указатель от ссылки отличается всем - это разные сущности языка С++. Можно с тем же успехом спрашивать чем отличается указатель и указатель на член класса (pointer & member pointer). И то, что компилятор использует указатель для физической реализации ссылки дела не меняет. Так что вопрос об отличии указателя и ссылки попросту некорректен |
|||
|
||||
| drug007 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 3.11.2011 Репутация: нет Всего: 1 |
И я такого же мнения. Если бы вопрос был о том, где лучше применять указатели, а где ссылки и почему - это уже совсем другой расклад. @feodorv, а не проясните про этот код?
Функция возвращает ссылку и мы этой ссылке присваиваем значение? Это сообщение отредактировал(а) drug007 - 22.9.2015, 10:16 |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
не ссылке (ссылке вообще нельзя присвоить значение, ее можно только инициализировать), а переменной на которую ссылается эта ссылка
Добавлено через 3 минуты и 48 секунд http://codepad.org/D2bBVPu2 |
|||
|
||||
| drug007 |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 3.11.2011 Репутация: нет Всего: 1 |
Я это и имел в виду. В принципе все просто, просто непривычная запись. В свое время сбил с толку default в switch'е вида:
Настолько привык, что default всегда последний. Привычки они не всегда полезные) |
||||
|
|||||
| konshyn |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 19.9.2013 Репутация: нет Всего: нет |
по-моему, вопрос более чем корректен. Ссылку на указатель можно создать, а вот указатель на ссылку - нет. Но что касается основного вопроса:
Считаю, что чтобы разрабатывать критически важные системы нужно знать и понимать все тонкости языка и все подводные камни, даже если их не используешь. Так что это вполне закономерный вопрос для отсеивания кандидатов ниже определенного уровня. Добавлено @ 14:07
Главное не путать ссылки и операцию взятия адреса. Хоть для этого и требуется один и тот же символ - амперсант. & Это сообщение отредактировал(а) konshyn - 26.10.2015, 11:24 -------------------- «Потому что ценность акта действия в этой стране возрастает в несколько раз». |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |