Ad esempio quando la funzione deve modificare il valore puntato dal parametro, quando il parametro è una struttura molto grossa, per cui sarebbe inefficiente passarla sempre per riferimento, quando il parametro è una classe di cui non si vuole che venga creata una copia (anche se in quest'ultimo caso nella maggior parte dei casi basterebbe scrivere un costruttore di copie per evitare il problema).