Listing 2: Access declaration

#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 —