I can't find any difference between function hiding and overloading. As the function hiding is the function that is present in derived class and hides the function of a base class. Having same name of the function in both of them. 
Overloading: having same name but different signature in both derived and base class.

```
class A {
    void print(int);
};
class B: public A {
    void print(float);
};

```

does it hide function or overload ?