#include <iostream>
using namespace std;
class Base
{
public:
void fun()
{
cout << "Base::fun() call";
}
void fun(int i)
{
cout << "Base::fun(int i) called";
}
};
class Derived:public Base
{
public:
void fun(char x)
{
cout << "Derived::fun(char x) called";
}
};
int main()
{
Derived d;
d.fun();
return 0;
}
Dlaczego powyższy program się nie kompiluje? Przecież klasa Derived dziedziczy funkcję void fun() z klasy bazowej, a to że ma tą samą nazwę co void fun(char x) nie powinno mieć znaczenia. W końcu jest przeładowanie funkcji. Te dwie funkcje mają inne sygnatury.