Listing 1: Base-member access and hiding

class base
    {
public:
    int i1;
private:
    int i2;
    int i3;
    int i4;
public:
    void f1();
private:
    void f2();
public:
    void f3();
    void f4();
    };

class derived : public base
    {
public:
    int i3;
private:
    int i4;
public:
    void f3(int);
private:
    void f4(int);
    };

int main()
    {
    derived d;
    d.i1;    // OK
    d.i2;    // error
    d.i3;    // OK
    d.i4;    // error
    d.f1();  // OK
    d.f2();  // error
    d.f3();  // error
    d.f3(3); // OK
    d.f4();  // error
    d.f4(4); // error
    }
— End of Listing —