I am a little confused over the two terminologies and would be glad to get some doubts clarified.
As I understand function overloading means having mult
A name can be hidden by an explicit declaration of that same name in a nested declarative region or derived class.
If a virtual member function vf is declared in a class Base and in a class Derived, derived directly or indirectly from Base, a member function vf with the same name and same parameter list as Base::vf is declared, then Derived::vf is also virtual an it overrides Base::vf.
When two or more different declarations are specified for a single name in the same scope, that name is said to be overloaded.
So this is clearly a case of hiding.