Я управлял 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
Clang-Tidy предлагает мне удалить константы, почему? ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1753826911
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>, это просто «удалить констант», отбрасываемая от меня в любом случае, поэтому я думаю, что прохождение по значению решает это.>
Подробнее здесь: [url]https://stackoverflow.com/questions/61147906/clang-tidy-suggest-i-remove-const-references-why[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия