Ссылка на const
- квалифицированный тип впоследствии изменяется
Этот дефект происходит, когда переменная, которая относится к const
- квалифицированный тип изменяется после объявления.
Например, в этом примере, refVal
имеет тип const int &
, но его значение изменяется в последующем операторе.
using constIntRefType = const int &; void func(constIntRefType refVal, int val){ ... refVal = val; //refVal is modified ... }
const
спецификатор на ссылочном типе подразумевает, что переменная типа инициализируется в объявлении и не будет впоследствии изменена.
Компиляторы могут обнаружить модификацию ссылок на const
- квалифицированные типы как ошибка компиляции. Если компилятор не обнаруживает ошибку, поведение не определено.
Избегайте модификации const
- типы полной ссылки. Если модификация требуется, удалите const
спецификатор от объявления ссылочного типа.
Группа: Хорошая практика |
Язык: C++ |
Значение по умолчанию: 'off' |
Синтаксис командной строки:
WRITE_REFERENCE_TO_CONST_TYPE |
Удар: низко |
C++ reference type qualified with const or volatile
| Find defects (-checkers)
| Qualifier removed in conversion
| Writing to const qualified object