Instance method called as if it is a static method
<p>Why can B::Func call A::Func using syntax that makes it look like a static method call?  Shouldn't this fail because it is an instance method?</p>

<pre><code>class A {
public:
    void Func() { 
        printf( "test" );
    }
};

class B : private A {
public:
    void Func() {
        A::Func();  // why does it work? (look below in main())
    }
};

int main() {
    B obj;

    obj.Func();
    // but we cannot write here, because it's not static
    // A::Func();

    return 0;
}
</code></pre>
