Qual é a diferença entre um ponteiro e uma referência?
Uma referência é vinculada uma vez e não pode ser null nem revinculada; um ponteiro pode ser null, pode ser reatribuído, e suporta aritmética. Use uma referência quando o objeto precisa existir, um ponteiro quando ele pode não existir. Como uma referência é um alias e não um objeto, &ref te dá o endereço do referenciado.