Da quello che ho capito, eval ammette istruzioni fatte con elementi base, logici e/o numerici.
Per le classi, o oggetti, la cosa viene svolta da Object.New(), che ti permette di creare oggetti in runtime, senza che il compilatore ci metta il naso.
E' ovvio che questo metodo non permette operazioni come Eval, ma ha lo stesso scopo, ovvero creare cose in runtime dinamiche.
E' altrettanto ovvio che la cosa necessità di molta attenzione, perchè il controllo lo ha il programma, e non più il compilatore, perchè viene esploso durante l'esecuzione, per cui errori e/o anomalie possono incasinare il programma. Comunque, con alcuni semplici accorgimenti, i problemi si possono evitare...
Per gli esempi, prova a farne qualcuno, non è complicato. Devi solo inserire un'operazione entro una stringa (es. "a=c+2"), il risultato verrà ritornato da eval in una variabile da te definita (es. var=Eval("a=c+2", valori delle variabili a e c)). Vedi help...