Sobes.tech
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.