Почему -Wshadow не предупреждает о затенении переменных-членов при наследовании?C++

Программы на C++. Форум разработчиков
Anonymous
Почему -Wshadow не предупреждает о затенении переменных-членов при наследовании?

Сообщение Anonymous »

Я изучаю C++ и пытаюсь понять затенение членов при наследовании. Рассмотрим этот код:

Код: Выделить всё

class A {
public:
int x;
};

class B : public A { public: int x; };

int main(void)
{
B test;

return 0;
}
когда я компилирую это с помощью: c++ -Wshadow file.cpp
я не получаю никаких предупреждений. Это меня смущает, потому что я понимаю, что затенение происходит, когда внутренняя область объявляет имя, которое уже объявлено во внешней области, в этом случае B::x, кажется, затеняет A::x, и затенение реально, потому что для доступа к A::x в B мне нужно будет использовать разрешение области: test.A::x
Что мне не хватает в том, как -Wshadow работает с наследованием? Это не считается затенением или есть что-то особенное в переменных-членах при наследовании?


Подробнее здесь: https://stackoverflow.com/questions/793 ... nheritance

Вернуться в «C++»