This doesn't work:
class Foo
{
public:
    virtual int A(int);
    virtual int A(int,int);
};
class Bar : public Foo
{
public:
    virtual int A(int);
};
Bar b;
int main()
{
    b.A(0,0);
}
It seems that by overriding Foo::A(int) with Bar::A(int) I have somehow hidden Foo::A(int,int). If I add a Bar::A(int,int) things work.
Does anyone have a link to a good description of what's going on here?