Maison > développement back-end > C++ > Comment éviter une récursion infinie lors de la surcharge de l'opérateur d'égalité (==) ?

Comment éviter une récursion infinie lors de la surcharge de l'opérateur d'égalité (==) ?

Patricia Arquette
Libérer: 2025-01-08 16:01:41
original
528 Les gens l'ont consulté

How to Avoid Infinite Recursion When Overloading the Equality Operator (==)?

Surchargez en toute sécurité l'opérateur d'égalité (==) pour éviter une récursion infinie

Lors de la surcharge de l'opérateur d'égalité (==), assurez-vous de gérer les cas nuls avec soin pour éviter une récursion infinie. Une boucle infinie de vérifications == peut se produire lorsqu'un ou les deux opérandes sont vides.

Pour résoudre ce problème, veuillez utiliser la méthode ReferenceEquals au lieu de == pour comparer la valeur nulle de l'objet. Cette méthode renvoie true si les deux opérandes sont nuls ou si les deux opérandes font référence au même objet, false sinon. En utilisant ReferenceEquals, le code suivant gère les valeurs nulles avec précision :

<code class="language-csharp">Foo foo1 = null;
Foo foo2 = new Foo();
Assert.IsFalse(foo1 == foo2);

public static bool operator ==(Foo foo1, Foo foo2) {
    if (object.ReferenceEquals(null, foo1))
        return object.ReferenceEquals(null, foo2);
    return foo1.Equals(foo2);
}</code>
Copier après la connexion

En adoptant cette approche, la méthode surchargée == peut comparer efficacement les objets Foo (qu'ils soient nuls ou non) sans déclencher une récursion infinie.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal