I understand how virtual functions work, my question is what's the purpose of a virtual function.

Is it just so you can more easily toggle between the same function in base and derived classes?

And what differs virtual functions from just creating seperate functions in the base and derived classes alone.

such as
Code:
class base
{
public:
     virtual func()
     {
          what's better about having a func in the 
          derived class?
     }
};

class derived
{
public:
     func2()
     {
          why not have this instead of a virtual           function?
     }
};