Локальная переменная создается копией из const ссылка и не изменена позже
Этот дефект возникает, когда локальная переменная создается копией из const ссылка, но не изменена позже.
Для образца переменная name создается копией из const ссылка, возвращенная из get_name функция:
const std::string& get_name();
...
void func {
std::string name = get_name();
}2 * sizeof(void *).Если переменная создана из const ссылка и не измененная позже, сама переменная может быть задана как const ссылка. Создание const ссылка позволяет избежать потенциально дорогостоящей операции копирования.
Избегайте создания новой локальной переменной путем копирования из const ссылка, если вы не хотите изменять переменную позже. Создайте const вместо этого ссылка.
Например, в предыдущем разделе можно переопределить переменную name как:
const std::string& get_name();
...
void func {
const std::string& name = get_name();
}Эффективность улучшения могут варьироваться в зависимости от используемого компилятора, реализации библиотеки и окружения.
| Группа: Эффективность |
| Язык: C++ |
| По умолчанию: Off |
Синтаксис командной строки
: EXPENSIVE_LOCAL_VARIABLE |
| Влияние: Средний |
Expensive copy in a range-based for loop iteration | Expensive pass by value | Expensive return by value | Find defects (-checkers) | Unmodified variable not const-qualified