What are the differences between a pointer variable and a reference variable in C++

Sei que referências são açúcar sintático, então o código é mais fácil de ler e escreve

Mas quais são as diferenças?

Resumo das respostas e links abaixo:

Um ponteiro pode ser redesignado várias vezes, enquanto uma referência não pode ser redesignada após a ligaçãPointers não podem apontar para lugar nenhum NULL), enquanto uma referência sempre se refere a um objet Você não pode usar o endereço de uma referência como pode com os ponteiro Não existe "aritmética de referência" (mas você pode pegar o endereço de um objeto apontado por uma referência e fazer ponteiros aritméticos nele como em&obj + 5).

Para esclarecer um equívoco:

O padrão C ++ é muito cuidadoso para evitar determinar como um compilador pode implementar referências, mas todo compilador C ++ implementa referências como ponteiros. Ou seja, uma declaração como:

int &ri = i;

se não for totalmente otimizado para longe, aloca a mesma quantidade de armazenamento que um ponteiro e coloca o endereço dei nesse armazenamento.

ntão, um ponteiro e uma referência usam a mesma quantidade de memóri

Como uma regra geral

Use referências nos parâmetros de função e tipos de retorno para fornecer interfaces úteis e de auto-documentaçãse ponteiros para implementar algoritmos e estruturas de dado

Leitura interessante:

Meu favorito de todos os tempos FAQ do C ++ lite.eferências vs. Ponteiros.Uma Introdução às Referências.References e const.

questionAnswers(30)

yourAnswerToTheQuestion