Este parágrafo do Código Completo 2 está invertido ou estou entendendo errado?

8

No capítulo 13, ao falar sobre ponteiros, há um parágrafo:

Às vezes, porém, você gostaria de ter a semântica de passagem por referência - ou seja, que o objeto passado não deve ser alterado - com a implementação da passagem por valor - ou seja, passando o objeto real em vez de uma cópia.

Parece que o autor cometeu um erro e misturou os dois. Isso é verdade ou não estou entendendo o que ele está dizendo corretamente?

mowwwalker
fonte

Respostas:

12

Você está certo e isso já está na página de erratas do livro.

A referência deve ter valor Na página 333, Alteração: "Às vezes, porém, você gostaria de ter a semântica de uma passagem por referência" Para "Às vezes, porém, você gostaria de ter a semântica de uma passagem por valor"

O valor deve ser referência Na página 333, Alteração: "com a implementação de uma passagem por valor" Para: "com a implementação de uma passagem por referência"

Clement J.
fonte
3

Sim, parece estar confuso. Troque e adicione um pouco mais, e isso faz sentido.

Às vezes você gostaria de ter a implementação de passagem por valor - ou seja, o objeto passado é uma cópia e as alterações não afetam o original - com a semântica de passagem por referência - ou seja, o próprio objeto não é passado.

Isso seria algo como um parâmetro de referência const. Isso permitiria que você tivesse uma estrutura grande e mutável, que era, no contexto de uma função específica, imutável.

jmoreno
fonte
1
Você queria mudar "implementação" e "semântica", além de "valor" e "referência"? Porque, para mim, teria feito mais sentido se você mantivesse "implementação" e "semântica" como está e apenas trocasse "valor" e "referência". Além disso, o que você quer dizer com "paramater de referência const (não existe)"? Existem referências Const.
sepp2k
2
Como assim, não existe? const T&existe absolutamente em C ++.
DeadMG 27/10/12
1
Meu erro na referência const.
jmoreno