#include <iostream>
using namespace std;
class Base
{
public:
virtual void func()
{
cout << "Base::func()" << endl;
}
virtual void func(int)
{
cout << "Base::func(int)" << endl;
}
virtual void func(int, int)
{
cout << "Base::func(int, int)" << endl;
}
};
class Override : public Base
{
public:
/* using */ Base::func;
void func()
{
cout << "Override::func()" << endl;
}
};
int main()
{
Override o;
o.func();
o.func(1);
o.func(1, 1);
return 0;
}
/* correct output:
Override::func()
Base::func(int)
Base::func(int, int)
*/
End of Listing