Описание тега name-hiding
A feature of the C++ language that causes functions in a base class to be hidden by overloads in a derived class.
A name can be hidden by another declaration with the same name in a different scope.
This can happen with names in nested scopes:
void f(int);
namespace ns {
void f(); // hides ::f(int)
void g() {
f(1); // error, name lookup finds ns::f()
}
}
And also with names in derived classes:
class Base {
public:
int func(int);
};
class Derived : Base {
public:
void func(); // hides Base::func(int)
};
Derived d;
int i = d.func(1); // error, name lookup finds Derived::func()
A hidden name can be made visible by re-declaring it in the second scope with a using declaration.