"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi les références Const prolongent-elles la durée de vie des temporaires en C++ ?

Pourquoi les références Const prolongent-elles la durée de vie des temporaires en C++ ?

Publié le 2024-11-07
Parcourir:321

Why Do Const References Extend the Lifetime of Temporaries in C  ?

Extension de la durée de vie de Rvalue par les références Const

En C , les références const servent non seulement d'alias immuables, mais prolongent également la durée de vie des temporaires. Pourquoi le comité C a-t-il décidé d'implémenter ce comportement ?

L'une des raisons de cette fonctionnalité est de masquer les détails d'implémentation aux classes et aux fonctions. Considérons une classe matricielle qui peut renvoyer des vecteurs de ligne ou des vecteurs de colonne. Pour optimiser les performances, la classe peut choisir de renvoyer une référence à une valeur interne en fonction de son organisation en lignes principales ou en colonnes principales. En exigeant que les clients acceptent les valeurs de retour comme références const, la classe peut basculer entre les références et les valeurs de manière transparente, protégeant ainsi les clients des détails d'implémentation.

Historiquement, la décision d'étendre la durée de vie de rvalue découle du désir de résoudre les incohérences dans la façon dont références traitées temporaires en 1993. A cette époque, le RVO (optimisation de la valeur de retour) n'existait pas. Interdire la liaison des temporaires aux références aurait pénalisé considérablement les performances. Ainsi, le comité a opté pour une solution qui permettait la liaison tout en prolongeant la durée de vie des temporaires pour garantir leur disponibilité lors d'une utilisation de référence.

Cette justification est documentée dans la proposition N0345.pdf, soumise au comité des normes C en 1993. . En prolongeant la durée de vie des rvalues, les références const facilitent une meilleure abstraction, maintiennent la flexibilité du code et optimisent les performances lors du renvoi d'objets à partir de fonctions.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3