Heim > Backend-Entwicklung > C++ > Ist eine „this != &rhs'-Prüfung in einem Verschiebungszuweisungsoperator erforderlich?

Ist eine „this != &rhs'-Prüfung in einem Verschiebungszuweisungsoperator erforderlich?

Susan Sarandon
Freigeben: 2024-11-28 19:28:12
Original
566 Leute haben es durchsucht

Is a `this != &rhs` Check Necessary in a Move Assignment Operator?

Zuweisungsoperator verschieben und this != &rhs

Im Standardzuweisungsoperator für eine Klasse ist es üblich, ein this != einzuschließen &rhs-Prüfung, um eine Änderung des aufrufenden Objekts bei der Zuweisung an sich selbst zu vermeiden. Ist diese Prüfung jedoch im Verschiebungszuweisungsoperator erforderlich?

Antwort:

Die Meinungen darüber, ob die this != &rhs-Prüfung im Verschiebungszuweisungsoperator erforderlich ist, gehen auseinander. Einige argumentieren, dass es eine gute Praxis ist, es immer einzubeziehen, während andere glauben, es sei unnötig und potenziell schädlich.

Begründung:

  • Begründung um die Prüfung einzuschließen: Es stellt sicher, dass das zugewiesene Objekt nicht das aufrufende Objekt selbst ist, was verhindert Selbstzuweisung.
  • Grund, die Prüfung wegzulassen: Im Verschiebungszuweisungsoperator ist das aufrufende Objekt per Definition kein Verweis auf das Objekt auf der rechten Seite (RHS). Daher ist die this != &rhs-Prüfung grundsätzlich wahr und unnötig. Darüber hinaus schlägt die Prüfung fehl, wenn die rechte und die linke Seite versehentlich vertauscht werden, was zu undefiniertem Verhalten führt.

Schlussfolgerung:

Letztendlich, ob einbezogen werden soll oder nicht Die this != &rhs-Prüfung im Verschiebungszuweisungsoperator ist eine Frage der persönlichen Vorlieben und des Kontexts. Es ist im C-Standard nicht erforderlich, aber einige Entwickler entscheiden sich möglicherweise dafür, es aus Sicherheitsgründen einzubeziehen oder eine unbeabsichtigte Selbstzuweisung zu vermeiden.

Das obige ist der detaillierte Inhalt vonIst eine „this != &rhs'-Prüfung in einem Verschiebungszuweisungsoperator erforderlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage