Почему виртуальная функция скрывается?

У меня есть следующие классы:

class A {
public:
    virtual void f() {}
};


class B : public A{
public:
    void f(int x) {}
};

Если я скажу

B *b = new B();
b->f();

, компилятор выдаст ошибку C2660:' B :: f ': функция не принимает 0 аргументов. Разве функция в B не должна его перегружать, поскольку это виртуальная функция? Скрываются ли виртуальные функции вот так?

EDIT : Я действительно хотел унаследовать B от A, что показывает такое же поведение.

22
задан Oszkar 11 November 2010 в 07:05
поделиться