Я работаю с библиотекой, которую я не могу изменить, и была поставлена задача заполнить библиотеку.Const Ref to const Pointer
Хотя я выполнил задание, и он работает, я действительно не понимаю, почему он работает, и должен ли он делать.
У меня есть функция в CPP файл
void Foo (const String &someName)
{
OtherFoo (&someName)
}
где Foo передает ссылку на константную строку и OtherFoo требует указателя на константные строки, которые будет передан ему.
Так в основном исх является const string&
и должно быть передано в OtherFoo как константный указатель (const &
к const *
)
Это то, что я сделал хорошо? (передавая адрес ref функции, для которой требуется указатель на константную строку)
Есть ли какие-либо негативы в том, как я прошел аргумент? Может ли кто-нибудь объяснить, почему это работает?
Большое спасибо
(Что касается словаря, 'const foo *' является указателем на const, а не константным указателем (это будет 'foo * const'),' const foo & 'является ссылкой на const . Делает вещи менее двусмысленными.) – Mat
Спасибо - переформулировали для константной корректности. Пожалуйста, отредактируйте, если вы увидите больше. – unknownSPY
Помните, что 'Foo' может быть вызван с временным объектом, а время жизни временного будет являться вызовом' Foo'. Если 'OtherFoo' хранит указатель для дальнейшего использования где-то, и это использование происходит после завершения Foo, указатель укажет на мертвый объект. – pmr