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