Do not confuse overrides with hiding. You are redefining virtual machines.
Defining your class is equivalent to:
class B3 : public A
{
public:
virtual void f() {cout <<"B3::f ()\n";}
};
ββ, , , , . , ++. , , . , , .
, :
A* a;
....
a->f();
a-f()? a A, B3. , int, . . ?
,
A a;
a.f();
cal f a, b3.f f B3.
, . , ( , ), ).
, ... , ? ?