Почему это так, что если функция базового класса перегружена в производном классе, базовая версия функции (даже если она общедоступна) недоступна через объект производного класса ?Перегрузка функции базового класса в производном классе
Например:
#include <iostream>
#include <string>
using namespace std;
class Base {
public:
void f(int i) {
cout << "\nInteger: " << i << endl;
}
};
class Derived : public Base {
public:
void f(string s) {
cout << "\nString: " << s << endl;
}
};
int main() {
Base b;
Derived d;
//d.f(5); Doesn't work
d.f("Hello");
//d.Base::f(5); works though
return 0;
}
[Это] (http://stackoverflow.com/questions/2391679/why-do-we-need-virtual-methods-in-c) может быть связано – wowofbob