Exploration du rôle de l'esperluette unique dans les paramètres des fonctions membres
Dans la programmation C, la syntaxe des fonctions membres inclut souvent l'utilisation de l'esperluette symboles (&) comme qualificatifs de référence pour les fonctions membres non statiques. Ces symboles peuvent influencer le comportement de l'appel de fonction en fonction de la catégorie de valeur de l'objet utilisé pour l'invoquer. Cet article explore l'importance de l'utilisation d'une seule esperluette (&) dans ce contexte.
Plus précisément, la présence d'une seule esperluette & après la liste de paramètres d'une déclaration de fonction membre implique que la fonction sera invoquée lorsque l'objet est une référence lvalue ou un objet régulier non-référence. Cela permet à la fonction d'être appelée directement en utilisant le nom de l'objet ou via une référence lvalue. Par exemple :
class wrap { public: operator obj() const & { ... } // Invocable via lvalue reference };
En revanche, l'absence de tout qualificatif ref, ce qui signifie qu'il n'y a pas d'esperluette dans la déclaration, indique que la fonction peut être invoquée quelle que soit la catégorie de valeur de l'objet. Cela signifie qu'il peut être appelé en utilisant une référence lvalue ou rvalue.
Pour mieux comprendre la distinction, considérez l'extrait de code suivant :
struct foo { void bar() {} // Function without a ref-qualifier void bar1() & {} // Function with an lvalue reference ref-qualifier void bar2() && {} // Function with an rvalue reference ref-qualifier };
Dans cet exemple :
Pour illustrer ce comportement, le code suivant montre comment ces fonctions peuvent être appelé en fonction de la catégorie de valeur de l'objet :
foo().bar(); // Always fine foo().bar1(); // Doesn't compile because bar1 requires an lvalue foo().bar2(); foo f; f.bar(); // Always fine f.bar1(); f.bar2(); // Doesn't compile because bar2 requires an rvalue
En résumé, la présence d'une seule esperluette & après la liste de paramètres d'une déclaration de fonction membre indique que la fonction peut être invoquée lorsque l'objet est une référence lvalue. Cela fournit un moyen de restreindre l'invocation de la fonction en fonction de la catégorie de valeur de l'objet utilisé.
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!