C ++自我比较检查

时间:2015-02-05 10:30:37

标签: c++ operator-overloading

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

对于赋值,我们希望避免自我分配一堆数据。同样是为了比较。如果检查分配是一个好习惯,那么它也应该用于比较。

1 个答案:

答案 0 :(得分:0)

因为我们通常会联系==来检查数据是否完全相同。 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,上述程序的输出也是假的。

Here就是样本。