bool operator==(const T& lhs, const T2& rhs);
像这样的重载似乎只对 (T)a==(T2)b
有效, 但是反过来(T2)b==(T)a
就不行了...
于是好像只有同时双向的进行重载:
bool operator==(const T& lhs, const T2& rhs);
bool operator==(const T2& lhs, const T& rhs) { return rhs == lhs; }
这样了?
正确的重载不同类型之间==操作符的作法是什么?
正确的做法是不要重载不同的自定义类型之间的==操作符。这么做除了把读代码的人弄晕外没有一点好处。