Mam jeden "problem". Potreboval by som vysvetlit nasledujuci kod:
#include "iostream"
using namespace std;
class B{
public:
virtual void fun(){cout << "B::fun()" << endl;}
};
class D : public B{
private:
void fun(){cout << "D::fun()" << endl;}
};
int main()
{
D d;
B *x= &d;
x->fun();
return 0;
}
Tento program po spusteni vypise: "D::fun()"
To znamena ze verejna virtualna metoda v zakladnej triede B je redefinovana privatnou metodou z D. Tym padom ked vytvorim pointer zakladnej triedy B* a neham ho ukazovat na odvodenu triedu typu D, tak po zavolani metody fun() cez pointer B* z main() (main nie je clenom ani friendom ziadnej z tried B, D) sa zavola privatna metoda z D. Znamena to ze pri vytvarani virtualnych tabuliek metod sa neberu do uvahy pristupove prava public/privat/protected alebo ako to vlastne funguje? :)