Llamando funciones de clase derivadas desde un vector (c ++)

Tengo dos clases:

class Object {
public:
  Object();
  virtual void update();
  virtual void draw();

private:

protected:
  int x, y, tick;

}

class Unit : public Object {
public:
  Unit();
  void update();

private:

protected:

}

Luego defino los constructores y las funciones en archivos .cpp separados.

Aquí están las definiciones de Objeto:

Object::Object() {
  x = y = 0;
};

Object::update() {
  tick ++;
};

Object::draw() {
  // All my draw code is in here.
};

Y Unidad:

Unit::Unit() : Object() {

};

Unit::update() {
  Object::update();
  // Then there's a bunch of movement related code here.
};

Todo funciona bien individualmente, pero me encuentro con un problema cuando intento llamar a funciones desde un vector.

vector<Object> objects;

Luego hago esto en mi vacío main ():

for (int i = 0; i < objects.size(); i ++) {
  objects[i].update();
  objects[i].draw();
};

Esto dibuja todo bien, pero solo llama a la versión Object de update () no a la versión definida por la clase derivada. ¿Tengo que hacer un vector para cada tipo que obtengo de la clase Object para que funcione, o hay otra forma de llamar a las funciones derivadas?

Gracias de antemano - Seymore