Идентификатор, объявленный во внутренних возможностях, не должен скрывать идентификатор, объявленный во внешних возможностях
Идентификатор, объявленный во внутренних возможностях, не должен скрывать идентификатор, объявленный во внешних возможностях.
Правило помечает ситуации, когда то же имя идентификатора используется в двух объявлениях переменных, один во внешних возможностях, а другой во внутренних возможностях.
int var; ... { ... int var; ... }
Все виды использования имени во внутренних возможностях относятся к переменной, объявленной во внутренних возможностях. Однако разработчик или рецензент кода могут неправильно предположить, что использование относится к переменной, объявленной во внешних возможностях. Во всех случаях, отмеченных этим правилом, вы не можете уточнить использование далее с помощью оператора разрешения возможностей.
Средство проверки правил помечает все случаи затенения переменной, кроме тех случаев, когда:
То же имя идентификатора используется во внешнем и внутреннем пространстве имен.
То же имя используется для представителя данных класса и переменной вне класса.
То же имя используется для метода в базовом и производном классах.
Шашка помечает даже те случаи, когда объявление переменной во внешних возможностях происходит после объявления переменной во внутренних возможностях. В этих случаях, хотя скрытие переменной не происходит, повторное использование имени переменной может вызвать путаницу разработчика.
Правило не помечает эти ситуации, потому что можно выяснить, относится ли использование переменной к переменной во внутренних или внешних возможностях. Например, в этом примере:
int var; namespace n1 { int var; }
n1
, можно ссылаться на переменную во внутренних возможностях следующим образом n1::var
и глобальную переменную как ::var
.Средство проверки правил также не обнаруживает эти проблемы:
Переменная в неназванном пространстве имен скрывает другую переменную во внешних возможностях.
Переменная, локальная к лямбда-выражению, скрывает захваченную переменную.
Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».
Группа: Идентификаторы |
Категория: Необходимый, Автоматизированный |