У меня есть следующие классы:
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, что показывает такое же поведение.