Perché stai sbagliando:
codice:
Studente::Studente(string a,string b,Data c,string d){
        Persona(a,b,c); // non ha proprio senso.
    CDL=d;
}
Nello specifico stai creando un oggetto Persona all'interno del costruttore di Studente. E persona è una classe virtuale pura.
Per passare i parametri da classe derivata a classe base dev'essere:
codice:
Studente::Studente(string a,string b,Data c,string d) : Persona(a,b,c) {
    CDL=d;
}
E se non fornisci un'implementazione a Docente:: print() avrai un altro errore.