Extension de la durée de vie 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 dissimuler 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 permettant 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.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!