Dans l'extrait de code donné :
class wrap { operator obj() const & { ... } //Copy from me. operator obj() && { ... } //Move from me. };
nous rencontrons deux déclarations de fonction membre avec des références différentes -qualificatifs (& et &&). Cependant, que signifie l'esperluette unique (&) ?
L'esperluette unique dans une déclaration de fonction membre non statique indique que la fonction membre est invoquée lorsque l'objet est une référence lvalue. Par défaut, les fonctions membres non statiques peuvent être invoquées sur les objets lvalue et rvalue. Cependant, en spécifiant &, la fonction ne peut accepter que les lvalues.
Pour illustrer la différence :
struct foo { void bar() {} void bar1() & {} void bar2() && {} };
Exemple :
int main() { foo().bar(); // (always fine) foo().bar1(); // doesn't compile because `bar1()` requires an lvalue foo().bar2(); // doesn't compile because `bar2()` requires an rvalue foo f; f.bar(); // (always fine) f.bar1(); f.bar2(); // doesn't compile because `bar2()` requires an rvalue }
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!