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

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

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 перегружать ее, поскольку это виртуальная функция? Виртуальные функции скрываются так?

РЕДАКТИРОВАТЬЯ действительно хотел наследовать B от A, который показывает то же самое поведение.

Ответы на вопрос(6)

Ваш ответ на вопрос