C++自比较检查

C++ self comparison check

本文关键字:检查 比较 C++      更新时间:2023-10-16

对于赋值运算符,我们检查:if(this == &rhs),为什么不检查bool operator==(const MyClass& rhs)中的自比较呢?

对于赋值,我们希望避免自赋值一堆数据。这也是为了进行比较。如果检查作业是一种很好的做法,那么也应该进行比较。

因为我们通常关联==来检查数据是否完全相同。this == &something检查它们是否是指向同一事物的指针。

#include <iostream>
struct A
{
    bool operator==(const A& rhs) const { return this == &rhs ; }
    int a ;
};
int main() {
    A a {2}, b{2};
    std::cout << std::boolalpha << (a == b);
    return 0;
}

即使作为a.a == b.a,上述程序的输出也是错误的。

这是样品。