Surcharge de l'opérateur pour le pré-incrémentation et la post-incrémentation
Cette enquête examine la faisabilité de surcharger l'opérateur pour faciliter à la fois le pré-incrémentation et le post-incrémentation. opérations d’incrémentation. En pré-incrémentation (SampleObject ), l'objet est incrémenté avant que sa valeur ne soit renvoyée. Le post-incrémentation ( SampleObject) incrémente l'objet et renvoie sa valeur d'origine.
La mise en œuvre de ces opérations via une surcharge d'opérateurs nécessite de comprendre les limites des types de retour. Même si la surcharge basée sur les types de retour peut sembler autorisée, elle pose un problème d'ambiguïté. La surcharge d'opérateurs étend les fonctionnalités des types intégrés aux types définis par l'utilisateur. Pourtant, on ne sait pas encore pourquoi les pré-incréments et les post-incréments ne peuvent pas coexister pour les types définis par l'utilisateur.
Pour résoudre cette ambiguïté, l'opérateur d'incrémentation postfix utilise un paramètre int factice :
// Prefix
Sample& operator ()
{
// Increment logic on this instance; return reference to it.
return *this;
}
// Postfix
Sample operator (int)
{
Sample tmp(*this);
operator (); // Prefix-increment this instance
return tmp; // Return value before increment
}
Avec cette approche, l'opérateur de pré-incrémentation renvoie une référence à l'objet incrémenté, tandis que l'opérateur de post-incrémentation renvoie une copie de l'objet avant l'opération d'incrémentation.
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