есть вот такой код:
#include<iostream>
class BaseClass
{
public:
virtual void f(int a, int b);
virtual void f(float e, float f, int a, int b) =0;
};
void BaseClass::f(int a, int b) {
return this->f( 0, 0, a, b);
}
class MyClass : public BaseClass
{
public:
virtual void f(float e, float f, int a, int b) override {
std::cout << "MyStorage" << std::endl;
}
};
int main(int argc, char* argv[]) {
MyClass *ms = new MyClass();
ms->f(0, 10);
return 0;
}
и ошибка компиляции
In function 'int main(int, char**)':
27:13: error: no matching function for call to 'MyClass::f(int, int)'
27:13: note: candidate is:
21:15: note: virtual void MyClass::f(float, float, int, int) 21:15: note: candidate expects 4 arguments, 2 provided
а если вызывать так:
BaseClass *ms = new MyClass();
ms->f(0, 10);
то все работает. а почему?