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