Devi usare il dynamic_cast<>
codice:
Persona* p;
Persona vettP[100];

p = new Occupato;
vettP[0] = p;

p = new Disoccupato;
vettP[1] = p;

...

Occupato* occ = dynamic_cast<Occupato*>(vettP[0]);

if (occ != 0) {
   cout << " occupato " << endl;
} else {
   cout << " non occupato " << endl;
}

Disoccupato* disocc = dynamic_cast<Disoccupato*>(vettP[1]);

if (disocc != 0) {
   cout << " disoccupato " << endl;
} else {
   cout << " non disoccupato " << endl;
}