Passage par valeur : Crée une nouvelle copie de l'argument ; l'original reste inchangé.
Passage par lvalue Référence : Modifie l'objet d'origine ; nécessite une identité stable (lvalue).
Passage par lvalue Référence à Const : Observe l'objet d'origine sans le modifier ; accepte à la fois les lvalues et les rvalues.
Passage par rvalue Référence : Se lie aux rvalues (objets temporaires ou déplacés) ; peut effectuer des opérations de déplacement.
Utiliser la référence lvalue pour les modifications :
Lorsqu'une fonction doit modifier l'objet d'origine, passez par la référence lvalue (& ).
Utilisez la référence lvalue à Const pour l'observation :
Pour les fonctions qui observent uniquement le état de l'objet, passez par référence lvalue à const (const &).
Envisagez de passer par valeur pour les types non intensifs en copie :
Si les copies sont peu coûteuses (par exemple, entiers, caractères), pensez à passer par valeur.
Surcharge pour les valeurs L et R (si nécessaire) :
Créez des surcharges séparées si des mouvements coûteux sont impliqués et que vous souhaitez éviter les déplacements à partir des valeurs l.
Utilisez le transfert parfait pour la gestion générique :
Utilisez la fonction templates et std::forward pour déterminer automatiquement s'il faut copier ou déplacer en fonction du type d'argument (rvalue/lvalue).
Classe CreditCard : Pensez à surcharger le constructeur avec deux versions :
CreditCard(CreditCard const& other); // lvalue reference to copy CreditCard(CreditCard&& other); // rvalue reference to move
Compte Cours avec un membre de carte de crédit :
Utilisez l'un des constructeurs suivants en fonction du souhait souhaité comportement :
Account(std::string number, float amount, CreditCard const& creditCard); // Copy Account(std::string number, float amount, CreditCard&& creditCard); // Move
Classe de compte avec vecteur de comptes membre :
Passer par référence ou référence const, selon que des modifications sont attendues ou non.
Client(std::string firstName, std::string lastName, std::vector<Account> accounts); // Reference for modification Client(std::string firstName, std::string lastName, std::vector<const Account> accounts); // Reference to const for observation
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!