如何重载运算符<如果我在左侧有一个Object本身,在右侧有一个整数?
我知道如何重载运算符“<” if 我想将对象与自身进行比较。即
bool NumberClass::operator<(NumberClass integer) {
if (this->integer < integer.number) {
return true;
} else
return false;
}
其中number是NumberClass类的私有成员
当我创建NumberClass对象但 如何设计运算符函数时,这是有效的 如果我想将对象数据成员与整数进行比较?
答案 0 :(得分:2)
应该这样做:
bool NumberClass::operator<(int integer_) {
return (this->integer < integer_);
}
顺便说一句,将if语句分隔为两个返回true / false语句被认为是不好的样式。这应该直接写在我的例子中。
答案 1 :(得分:2)
所以NumberClass
的左侧和右侧都有operator <
,对吗?
bool NumberClass::operator<( const NumberClass &rhs ) const
{
return integer < rhs.integer;
}
如果您想要与普通int
进行比较,那么您只需更改参数类型:
bool NumberClass::operator<( int rhs ) const
{
return integer < rhs;
}
两者都可以共存,因为C ++允许重载。
一些风格笔记:
this
。rhs
表示“右手边”。您将在很多operator
定义中看到这一点。if
语句中包装它更好。const
,以便它们可以与const
个合格的类实例一起使用。