Extensão do tempo de vida de Rvalue por referências const
Em C , as referências const não servem apenas como aliases imutáveis, mas também estendem o tempo de vida dos temporários. Por que o comitê C decidiu implementar esse comportamento?
Uma justificativa para esse recurso é ocultar detalhes de implementação de classes e funções. Considere uma classe de matriz que pode retornar vetores linha ou vetores coluna. Para otimizar o desempenho, a classe pode optar por retornar uma referência a um valor interno com base em sua organização de linha principal ou coluna principal. Ao exigir que os clientes aceitem valores de retorno como referências const, a classe pode alternar entre referências e valores perfeitamente, protegendo os clientes dos detalhes de implementação.
Historicamente, a decisão de estender a vida útil do rvalue resultou do desejo de resolver inconsistências em como referências tratavam de temporários em 1993. Naquela época, RVO (otimização do valor de retorno) não existia. Proibir a vinculação de temporários a referências teria penalizado significativamente o desempenho. Assim, o comitê optou por uma solução que permitisse a vinculação e ao mesmo tempo prolongasse a vida útil dos temporários para garantir sua disponibilidade durante o uso de referência.
Essa justificativa está documentada na proposta N0345.pdf, submetida ao comitê de padrões C em 1993 . Ao estender o tempo de vida dos rvalues, as referências const facilitam uma melhor abstração, mantêm a flexibilidade do código e otimizam o desempenho ao retornar objetos de funções.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3