Questa:
codice:
typedef char* STRING;
non è una ASCIIZ string: è un petardo che scoppia in mano.
Non cavillo troppo sul resto, ma prima impari a usare std::string e prima non ripeterai questi errori.

Questa
codice:
#define LEN 32
char nome_esame[LEN];
è una ASCIIZ String.

codice:
class Esame{
    private:
    int voto,cfu;
   char nome[LEN];
public:
   Esame();
   void inserisciNome(const char* n, int len);
   void inserisciVoto(int );
   void inserisciCfu(int);
   int getVoto()const;
   int getCfu()const;
   const char* getNome(STRING)const;
   void stampaTutto();
};

Esame::Esame(){
   voto=0;
   cfu=0;
   nome=0; // o memset(nome,0,LEN);
}

void Esame::inserisciVoto(int voto1){ voto=voto1 ; }

void Esame::inserisciCfu(int cfu1){ cfu=cfu1;}
void Esame::inserisciNome(const char* nm, int len) { 
    strncpy(nome,nm,len);    
}

int Esame::getVoto()const{ return voto;}

int Esame::getCfu()const{ return cfu;}
const char*Esame::getNome()const{ return nome;}

void Esame::stampaTutto(){
cout<<"il voto è: "<<voto<<" il cfu è : "<<cfu<<endl;
}

int main (){
    Esame e;
    char nome[LEN];


cout<<"\n inserisci nome: "<<endl;
cin.getline(nome,len);
e.inserisciNome(nome,LEN);
cout << e.getNome() << endl;