Retornando vs. usando um parâmetro de referência

Isso está realmente me incomodando, vindo de um fundo c #.

Às vezes, vejo funções escritas assim:

int computeResult();

Isso é o que eu estou acostumado. Mas então eu os vejo escritos assim:

void computeResult(int &result);

Eu acho isso estranho. Quais benefícios o segundo método tem sobre o primeiro, se houver? Deve haver alguma coisa, já que eu vejo isso o tempo todo.

questionAnswers(1)

yourAnswerToTheQuestion