method hiding in C++

```
#include<iostream>
using namespace std;
  
class Base {
public:
    int fun()      { cout << "Base::fun() called"; }
    int fun(int i) { cout << "Base::fun(int) called"; }
};
  
class Derived: public Base {
public:
    int fun(char c)   { cout << "Derived::fun(char) called"; }
};
  
int main() 
{
    Derived d;
    d.fun();    // cannot compile
    return 0;
}
```