heh*_*301 55 c++ operator-overloading
说我正在上课:
class Foo{
public:
std:string name;
/*...*/
}/*end Foo*/
Run Code Online (Sandbox Code Playgroud)
我提供了一个重载 operator==
bool operator==(const Foo& fooObj, const std::string& strObj) {
return (fooObj.name == strObj);
}
Run Code Online (Sandbox Code Playgroud)
我是否还需要反向重新实现相同的逻辑?
bool operator==(const std::string& strObj, const Foo& fooObj) {
return (strObj == fooObj.name);
}
Run Code Online (Sandbox Code Playgroud)
Sto*_*ica 76
如果您想支持字符串在左侧而!=
在右侧的比较,您可以这样做.实现不会将参数重新排序为重载==
以使其工作.
但是,您可以避免重复实现的逻辑.假设您的运营商应该按预期行事:
inline bool operator==(const std::string& objA, const Foo& objB) {
return objB == objA; // Reuse previously defined operator
}
Run Code Online (Sandbox Code Playgroud)
是的你是.就像在许多其他语言中一样,C++需要侧面,并且两个不同类型的对象之间的比较将导致根据顺序调用两个不同的比较运算符.
当然,你希望它们保持一致并且不足为奇,所以第二个应该用第一个来定义.
归档时间: |
|
查看次数: |
5280 次 |
最近记录: |