Junior
Como se chama a alternativa para passar valores em vez de referências em C/C++?
sobes.tech IA
Resposta da IA
Passagem de valor usando referências a objetos constantes.
void process_value(const MyObject& obj) {
// Trabalhamos com obj como se tivesse sido passado por valor
// (as alterações são impossíveis graças a const),
// mas evitamos copiar um objeto grande.
// Esta função NÃO PODE alterar o estado do objeto ao qual se refere obj.
}
// Exemplo de uso:
MyObject large_object;
process_value(large_object); // large_object não é copiado
Vantagens em comparação com passagem por valor:
- Evita cópia dispendiosa de objetos grandes, melhorando o desempenho.
- Mantém a semântica de passagem por valor no que diz respeito à imutabilidade dentro da função.
Desvantagens em comparação com passagem por valor:
- Requer uma sintaxe especial
const &na assinatura da função. - Se o objeto for muito pequeno (por exemplo, um tipo primitivo
int), passar por valor pode ser mais rápido devido a custos potenciais de desreferenciamento da referência.