187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|||||||||||
1 | |||||||||||
Опциональный ссылочный аргумент функции23.02.2014, 09:46. Показов 4027. Ответов 24
Метки нет (Все метки)
Некоторые аргументы функции можно сделать опциональными, просто поставив значение по умолчанию, а затем проверяя, изменилось ли оно :
0
|
23.02.2014, 09:46 | |
Ответы с готовыми решениями:
24
Опциональный вызов деструктора в шаблоне Вычислить значение функции аргумент которой вычисляется из другой кусочно заданной функции Передача функции в аргумент Беззнаковый аргумент функции |
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
23.02.2014, 09:47 | 2 |
Нет, ссылка должна быть инициализирована и не имеет null-семантики (простите за варварские формулировки)
1
|
23.02.2014, 10:27 | 3 | |||||
2
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||||||||||||
23.02.2014, 11:56 | 4 | |||||||||||||||
igorrr37, всё-таки речь шла о неконстантной ссылке. Тем более, если в 12 строке будет:
Если нужно просто сделать ссылочное значение по умолчанию, достаточно такого:
Но, как уже сказал 0x10 ссылка должна быть инициализирована, т.е. указывать на объект. А если хочется сделать код максимально похожий на код ТС, то можно предложить такой вариант:
2
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|||||||||||
24.02.2014, 18:44 [ТС] | 5 | ||||||||||
Tulosba, безопасно ли делать нечто подобное?
Добавлено через 6 минут Если это нормально, то, выходит, впорядке будет и такое:
0
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|
24.02.2014, 20:27 [ТС] | 7 |
Tulosba, в рекурсии я в комментах написал, что есть условие на выход.
Без константной ссылки собирается. Проверено. А double(0) не собирается для неконстантной ссылки, так что тут другое. А хотелось бы, чтобы собиралось
0
|
18893 / 9850 / 2410
Регистрация: 30.01.2014
Сообщений: 17,293
|
|
24.02.2014, 20:36 | 8 |
Это так в соответствии со стандартом (нельзя привязывать не константную ссылку к rvalue), однако студия 2010 и ниже нарушала это правило и позволяла эту конструкцию (как расширение языка).
Добавлено через 19 секунд См. мой ответ
1
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|
24.02.2014, 20:55 [ТС] | 10 |
Tulosba, DrOffset, но что же тогда делать? Хочется ведь не передавать лишних параметров в функцию, а сделать для рекурсии локальную карту (std::map) для некоторых внутренних нужд, которая должна быть доступна из любого уровня рексии. 2008 студия позволила сделать то, что я описывал выше, благодоря чему такой финт с map работал, но с const map<>& такое не сработает, ибо константа..
0
|
18893 / 9850 / 2410
Регистрация: 30.01.2014
Сообщений: 17,293
|
|
24.02.2014, 21:02 | 12 |
Да. Однако странная разница в поведении, когда меняется тип с встроенного на не встроенный.
Добавлено через 2 минуты В С++11 есть rvalue references.
1
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|
25.02.2014, 15:00 [ТС] | 13 |
DrOffset, можете пример с r-ref показать?
0
|
18893 / 9850 / 2410
Регистрация: 30.01.2014
Сообщений: 17,293
|
|
25.02.2014, 15:09 | 14 |
1
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|
25.02.2014, 16:24 [ТС] | 15 |
DrOffset, а она разве в случае, когда нужно сделать рекурсию с внутренними данными поможет?
0
|
18893 / 9850 / 2410
Регистрация: 30.01.2014
Сообщений: 17,293
|
|
25.02.2014, 16:30 | 16 |
Честно говоря не очень понята эта формулировка.
Но смысл она (rvalue reference) несет тот же, что и в записи с неконстантной ссылкой. Временный объект не копируется, привязывается к ссылке с именем str.
1
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
||||||
25.02.2014, 17:07 [ТС] | 17 | |||||
DrOffset, я про то, что писал выше:
0
|
18893 / 9850 / 2410
Регистрация: 30.01.2014
Сообщений: 17,293
|
|
25.02.2014, 19:05 | 18 |
За исключением того, что в твоем примере изначально бесконечная рекурсия, не вижу причин почему нет?
1
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|
25.02.2014, 20:42 [ТС] | 19 |
DrOffset, как я уже отвечал выше, я же в комментариях написал, что есть нечто, для выхода из функции "//something to exit" - 3 строка.
То есть && может выполнять ту же функцию, что и &?
0
|
18893 / 9850 / 2410
Регистрация: 30.01.2014
Сообщений: 17,293
|
|
25.02.2014, 21:04 | 20 |
0
|
25.02.2014, 21:04 | |
25.02.2014, 21:04 | |
Помогаю со студенческими работами здесь
20
Не читается аргумент функции Непонятный аргумент функции Безымянный аргумент функции Аргумент argv в функции main() Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |