#include <iostream>
using namespace std;
class Base{
public:
Base(){Init();}
virtual void Init(){cout<<"Base Init/n"<<endl;}
void func(){cout<<"Base func"<<endl;}
};
class Derived:public Base{
public:
virtual void Init(){cout<<"Derived Init"<<endl;}
void func(){cout<<"Derived func"<<endl;}
};
int main(void)
{
Derived d;
((Base *)&d)->func();
return 0;
}
The virtual funcions in base class will not be called as you expected