Declaração de funções: Dúvida sobre interpretação. [RESOLVIDO]

1. Declaração de funções: Dúvida sobre interpretação. [RESOLVIDO]

rob
robgeek

(usa Debian)

Enviado em 10/02/2016 - 14:29h

Boa tarde!

Sou novo em C++ e queria saber como eu leio ou entendo essa declaração:
bool exemplo1(const Number &a, const Number &b) 


Bem, por exemplo, na declaração abaixo acho que "exemplo2" receberá dois endereços de objetos do tipo Number. Um endereço ficará na variável "a" e o outro na variável "b".
bool exemplo2(Number *a, Number *b) 


No método "exemplo1", não entendi por que há um "const" e principalmente esse "&a" achei estranho também. Como posso interpretar essa declaração?

Obrigado!


  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 11/02/2016 - 00:43h

robgeek escreveu:

Boa tarde!

Sou novo em C++ e queria saber como eu leio ou entendo essa declaração:
bool exemplo1(const Number &a, const Number &b) 


Eis uma pergunta básica. Você não está seguindo algum livro ou método de C++, que lhe explique isso?

Em todo caso, eis o significado: "exemplo1 é uma função que recebe como primeiro argumento (a) uma referência para dado constante do tipo Number, como segundo argumento (b) uma referência para dado constante do tipo Number, e devolve ao retornar um valor do tipo bool”.

Uma referência em C++ é grosseiramente análoga a um ponteiro, no sentido de que é usada para apontar para dados originalmente armazenados em outras variáveis, mas tem algumas diferenças, entre as quais:

(1) a associação entre o objeto real e a referência para ela não precisa (nem pode ter) do operador & aplicado ao objeto original (o compilador sabe que é uma referência e obtém o endereço por você);

(2) a associação é feita no momento em que a referência passa a existir no escopo de execução do programa (não existe referência pendente de associação);

(3) uma vez feita a associação de uma referência a um objeto, essa associação nunca será alterada, até que a referência saia do escopo de execução (quando ela deixa de existir);

(4) uma referência sempre se refere a um dado válido (i.e. não existe análogo ao ponteiro nulo para referências);

(5) na hora de manipular o objeto por meio da referência, não é necessário (nem possível) usar o operador * (o compilador sabe que é uma referência, e a derreferencia para você);

(6) a referência funciona como sinônimo exato do objeto que ela referencia (i.e. qualquer operação aplicada sobre a referência é exatamente equivalente ao que aconteceria se a mesma operação fosse feita sobre a variável original, incluindo aplicar o operador &, que serve para obter o endereço de um objeto).





Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts