1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886

Константные и не константные ссылки. Приведения типов. Нужно уточнение

26.11.2015, 23:54. Показов 11663. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не очень понимаю в чем различие (2,3 строчки).

C++
1
2
3
 int x = 10;
 double &y = x;
 const double &y = x;
Почему для не константной ссылки временный объект, созданный из x не вяжется с double &,
в то время как временный объект, созданный из x без проблем вяжется с const double &
____________
Просьба не приводить цитаты стандарта, а просто по-человечески описать русскими словами. (русскоязычное описание ситуации при желании можно закрепить стандартом).
Я могу видеть только то, что создается временный объект (const double), который в последствии копируется в y, а т.к. константой инициализировать переменную можно, то для меня логично, что строчка 2 валидна, но это не логично для компиляторов. В то время как строчка 3 валидна и для меня и для компиляторов
1
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.11.2015, 23:54
Ответы с готовыми решениями:

Константные ссылки на неправильные тип данных
Здравствуйте, вопрос небольшой, так что сразу к делу. Я тут вычитал, что когда мы создаем ссылку на один тип, а присваиваем ему...

Можно ли в std::vector хранить константные ссылки?
Можно ли в std::vector хранить константные ссылки? при обьявлении не ругается, когда добавляю (const Item* ) в нем содержится куча...

Константные функции
Почему все работает? class My { public: My(); int retFunc() const; private: bool isRet = false; };

43
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
30.11.2015, 13:48
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от DrOffset Посмотреть сообщение
Даже дословный перевод без украшательств русской речи выглядит приемлемо:
Временный объект, привязанный к ссылке в параметре функции при вызове, продлевается до конца полного выражения содержащего вызов.
Почти один в один с оригиналом по расположению слов и порядку чтения.
Кстати, мысль. Что, если здесь на форуме создать хранилище русских переводов цитат из стандарта, попросить людей цитировать его в переводе, и туда эти переводы заносить. Так можно, шутя и играя, накопить довольно много полезной информации.
Мне кажется, будет очень полезно. А то изучение английского хорошо, а изучение стандарта все-таки лучше.
1
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,042
Записей в блоге: 1
30.11.2015, 14:17
Mr.X, нужен кто-то, кто займется
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
30.11.2015, 14:36
Цитата Сообщение от Croessmah Посмотреть сообщение
Mr.X, нужен кто-то, кто займется
Ну, можно так сделать. Кто-то заводит и закрепляет соответствующую тему. И попросить цитирующих стандарт по-русски вставлять цитату в эту тему, а в текущей теме давать на нее ссылку.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
03.12.2015, 00:04
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
1) в строке 8 создается временный объект и ссылка ссылается на него rv
2) в 9 строке мы обращаемся к метода объекта, которого нет. Стандарт не гарантирует, что он жив и нужном состоянии. Следовательно если архитектура кода, может при не верных действиях содержать код - код UB.
hoggy, можете пролить свет кто прав - пожалуйста.
все верно.
не константная ссылка не продлевает жизнь временного объекта.
поитогу имеем труп,
который однако с высокой степенью вероятности сохраняет актуальное состояние.

я сталкивался с ситуацией,
когда код работал исправно,
но стал чудить при некоторых настройках оптимизации.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.12.2015, 00:04

Константные объекты
#include <iostream> #include <windows.h> using namespace std; class CTest { public: int A,B; CTest(int Aval,int...

Указатели на константные объекты
Нельзя создать неконстантный указатель на константный объект по понятным причинам, но имеем такой код: typedef char* pStr; int...

Константные поля класса
Такой вопрос, как инициализировать константные поля класса? Работают конструкции вида obj():t(0){}; который используется в примере ниже. А...

Константные функции-члены
можно ли функцию-член объявить константной, если она возвращает указатель-член класса? Ведь она не изменяет занчение самого укзателя, но...

Константные аргументы классов
Добрый вечер! Поясните мне в чем беда.. есть код: // Hanoian towers. Lab2 #include <iostream> using namespace std; ...


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

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

Новые блоги и статьи
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru