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
Patricia Arquetteoriginal
2025-01-08 16:01:41523parcourir

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>

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!

Déclaration:
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