Clang-Tidy предлагает мне удалить константы, почему?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Clang-Tidy предлагает мне удалить константы, почему?

Сообщение Anonymous »

Я управлял Clang-tidy (модули «модернизируется») на дереве проекта, которое я пытался поддерживать в курсе C ++ 17. Почти все, что он исправил, было неудивительным для меня, за исключением одной вещи: это изменило все эти типы конструкций: < /p>

void foo(const std::string& str) {
}
< /code>

.. to to: < /p>

void foo(std::string str) {
}
< /code>

И я не понимаю, почему. Для моего неподготовленного глаза это будет означать две вещи: < /p>


[*] Это должно было бы скопировать объект, а не просто передавать ссылку. (Хотя я предполагаю, что существуют ситуации, когда компилятор может сделать вывод, что он может просто передавать указатель, когда он генерирует код, но ссылка делает его явным (что лучше IMHO)).
Констант, чтобы сказать разработчику функции, что он не должен менять входную строку, и что если он должен изменить струну, чтобы хранить свою собственную копию. />
Я действительно вижу потенциал, хотя, просто передавая объект в качестве ссылки на const < /code>, это просто «удалить констант», отбрасываемая от меня в любом случае, поэтому я думаю, что прохождение по значению решает это.>

Подробнее здесь: https://stackoverflow.com/questions/611 ... rences-why
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»