В C ++, будет ли функция-член базового класса переопределена своей производной функцией с тем же именем, , даже если ее прототип (число параметров, тип и константа) отличается ? Я думаю, что это глупый вопрос, так как многие веб-сайты говорят, что прототип функции должен быть таким же, чтобы это произошло; но почему приведенный ниже код не компилируется? Я считаю, что это очень простой случай наследования.
#include <iostream>
using std::cout;
using std::endl;
class A {};
class B {};
class X
{
public:
void spray(A&)
{
cout << "Class A" << endl;
}
};
class Y : public X
{
public:
void spray(B&)
{
cout << "Class B" << endl;
}
};
int main()
{
A a;
B b;
Y y;
y.spray(a);
y.spray(b);
return 0;
}
GCC бросает
error: no matching function for call to `Y::spray(A&)'
note: candidates are: void Y::spray(B&)