Surcharge de l'opérateur pour le pré-incrémentation et le 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. 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 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 :
<code class="cpp">// 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 }</code>
Avec ceci 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.
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!