int Funzione()=0;
non l'ho mai visto (ma magari esiste non lo so).
forse ti riferisci a
	codice:
	class Classe
{
    virtual int Funzione()=0;
}
 
In questo caso si dice che la classe Classe è una classe astratta (in java sarebbe avresti scritto abstract invece di virtual ... = 0) ovvero non può essere istanziata.
Quando crei un metodo virtuale il compilatore fa in modo di utilizzare sempre il codice overridato della classe derivata a cui appartiene l'istanza dell'oggetto, anche se tramite un casting è stato ridotto ad un tipo base; per implementare questo comportamento esiste un certo "costo" a runtime; un codice inserito dal compilatore controlla su un'apposita tabella (v-table) associata all'oggetto qual'è il puntatore alla funzione corretta da richiamare, la risoluzione a differenza delle altre funzioni membro non avviene quindi staticamente ma dinamicamente a runtime.
Se il metodo oltre ad essere virtuale è anche puro, significa che le classi derivate devono implementare tutti i metodi virtuali puri per potere essere istanziabili.
Quindi se hai una funzione che prende una classe base come parametro e sai che questa funzione esegue un metodo virtual sei sicuro che verrà eseguito il codice giusto per quella determinata istanza.
esempio
	codice:
	class forma
{
   virtual double Area()=0;
};
class rettangolo
{....
   double Area(){return base * altezza;}
};
class quadrato : public rettangolo{
  ...
double Area(){return base * base ;}
};
void stampaArea(forma &f)
{
   cout << f.Area(); //controlla qual'è l'istanza di f ed esegue
                     // il metodo corretto a seconda che sia 
                     //rettangolo o quadrato
}
....
 
FUNZIONI MEMBRO COSTANTI
	codice:
	class C
{
 ...
char *buffer;
char *pCurrentChar;
public:
   char Char(void) const{ return *pCurrentChar;} 
   char Next(void){ return ++pCurrentChar,*pCurrentChar;} 
...
};
 
Per quanto riguarda la definizione di una funzione costante, significa che stai dichiarando che questa funzione non modifica i dati membro.
Cio permette al compilatore di lasciarti usare questo metodo anche se il tuo oggetto è dichiarato costante, ad esempio
const C classe;
C.Char(); //legale
C.Next(); //illegale perchè l'oggetto è const e Next non è costante
 
NB
Queste definizioni che ho dato non sono rigorose tecnicamente, se sei incuriosito prendi un buon libro sul C++ (ce ne sono pochi titoli, se cerchi sul forum trovi diverse discussioni a riguardo).