Вопрос про const reference
Никогда вроде бы не встречал раньше такого:
const double &r = 0.1;
Скажите, пожалуйста, стандартом разрешается создавать ссылку на константу?
Re: Вопрос про const reference
Здравствуйте, Максим Рогожин, Вы писали:
МР>Никогда вроде бы не встречал раньше такого:
МР>МР>const double &r = 0.1;
МР>
МР>Скажите, пожалуйста, стандартом разрешается создавать ссылку на константу?
испокон веков, причем время жизни временного объекта продлевается до конца жизни ссылки:
struct foo {};
foo boo() {return foo();}
...
{
foo const& r = boo(); // временный объект будет жить до конца обрамляющего скопа
...
}
Re: Вопрос про const reference
Здравствуйте, Максим Рогожин, Вы писали:
МР>Никогда вроде бы не встречал раньше такого:
МР>МР>const double &r = 0.1;
МР>
МР>Скажите, пожалуйста, стандартом разрешается создавать ссылку на константу?
0.1 — это не константа, а
литерал типа
double .
Встречали ли Вы раньше следующую конструкцию?
const std::string& s = "Hello!" ;
Или такую?
void foo(const std::string& arg);
// ...
foo("World!" );
Re[2]: Вопрос про const reference
Здравствуйте, Анатолий Широков, Вы писали:
АШ>испокон веков, причем время жизни временного объекта продлевается до конца жизни ссылки:
Да, но это для локальных ссылок. А если так:
const double &r = 0.1; // глобальная ссылка
int main() {
return 0;
}
Re[2]: Вопрос про const reference
Здравствуйте, Constructor, Вы писали:
C>C>const std::string& s = "Hello!" ;
C>
Это локальная ссылка? Или в глобальной области видимости? А в чем выгода такой конструкции по сравнению с
const std::string s("Hello!" );
Re[3]: Вопрос про const reference
Здравствуйте, Максим Рогожин, Вы писали:
C>>C>>const std::string& s = "Hello!" ;
C>>
МР>Это локальная ссылка? Или в глобальной области видимости?
Может быть и локальной, и глобальной.
МР>А в чем выгода такой конструкции по сравнению с
МР>МР>const std::string s("Hello!" );
МР>
Выгоды нет, но ее никто и не обещал.
Re[4]: Вопрос про const reference
Здравствуйте, Constructor, Вы писали:
C>Может быть и локальной, и глобальной.
C>Выгоды нет, но ее никто и не обещал.
В вашем примере происходит преобразование типов из const char* в std::string. А в этом примере
const double &r = 0.1;
создается временная переменная double потому что ссылку можно инициализировать только переменной, так?
Re[5]: Вопрос про const reference
Здравствуйте, Максим Рогожин, Вы писали:
МР>В вашем примере происходит преобразование типов из const char* в std::string.
Однако. Вот еще один пример:
const double &r = 0;
МР>А в этом примере
МР>МР>const double &r = 0.1;
МР>
МР>создается временная переменная double потому что ссылку можно инициализировать только переменной, так?
Константная ссылка может быть привязана ко временному объекту.
Re[3]: Вопрос про const reference
Здравствуйте, Максим Рогожин, Вы писали:
МР>Здравствуйте, Анатолий Широков, Вы писали:
АШ>>испокон веков, причем время жизни временного объекта продлевается до конца жизни ссылки:
МР>Да, но это для локальных ссылок. А если так:
МР>МР>const double &r = 0.1; // глобальная ссылка
МР>int main() {
МР> return 0;
МР>}
МР>
Глобальная ссылка продлит время жизни временного объекта на время выполнения программы.
Re[5]: Вопрос про const reference
От:
Meyers
Дата: 20.03.18 17:25
Оценка:
МР>А в этом примере
МР>МР>const double &r = 0.1;
МР>
МР>создается временная переменная double потому что ссылку можно инициализировать только переменной, так?
Создаётся временный
объект типа
const double.
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить