Локальная переменная создается копией из 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