Uno crede di avere le basi, e poi scopre che gli mancano questi concetti banali xD
Approposito di basi, avrei un altro problema con la medesima classe (che ora ho modificato):
class Persona{
      private:
              char *Nome;
              char *Cognome;
              int Eta;
              static int Num_Pers;
      public:
             Persona(){
                       Nome=new char;
                       Cognome=new char;
                       Eta=0;
                       Num_Pers ++;
                       }
             ~Persona(){
                        delete Nome;
                        delete Cognome;
                        Num_Pers --;
                        };
             void add_data(char &N, char &C, int E){
                          Nome=&N;
                          Cognome=&C;
                          Eta=E;
                          };
             int printn(){ return Num_Pers;};
             };
Perchè il distruttore mi da errore nel 
delete Nome? Come se non puntasse a nulla, in quanto se prima del delete aggiungo un'assegnazione, mi funge benissimo. Non capisco davvero dove sta l'errore dato che comunque per il membro Cognome poi funziona tutto alla perfezione