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 nenhumNULL
), 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 dadoLeitura interessante:
Meu favorito de todos os tempos FAQ do C ++ lite.eferências vs. Ponteiros.Uma Introdução às Referências.References e const.