对于赋值运算符,我们检查:if(this == &rhs)
,为什么不在bool operator==(const MyClass& rhs)
中检查相同的自我比较?
对于赋值,我们希望避免自我分配一堆数据。同样是为了比较。如果检查分配是一个好习惯,那么它也应该用于比较。
答案 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就是样本。