I understand what a virtual function is:

Code:
class Base
{
public:
  virtual int DoSomething();
  int DoSomethingElse();
};

class Derived : public Base
{
public:
  int DoSomething();
  int DoSomethingElse();
};

int main(void)
{
  Derived* d = new Derived;
  Base* b = d;

  d->DoSomething();  // Calls Derived::DoSomething()
  b->DoSomething();  // Calls Derived::DoSomething()

  d->DoSomethingElse();  // Calls Derived::DoSomethingElse()
  b->DoSomethingElse();  // Calls Base::DoSomethingElse()
  d->Base::DoSomethingElse();  // Calls Base::DoSomethingElse()

  delete d;

  return 0;
}
My question is: Why wouldn't you make all functions virtual?
I am just learning C++ and this concept doesn't make alot of sense right now. Also, does a virtual function have to be overriden by a derived class???

Thanks for any help