运算符重载 - 将对象与整数进行比较

时间:2013-12-21 15:35:06

标签: c++ operator-overloading

如何重载运算符<如果我在左侧有一个Object本身,在右侧有一个整数?

我知道如何重载运算符“<” if 我想将对象与自身进行比较。即

  bool NumberClass::operator<(NumberClass integer) {

if (this->integer < integer.number) {
    return true;
} else
    return false;
 }

其中number是NumberClass类的私有成员

当我创建NumberClass对象但 如何设计运算符函数时,这是有效的 如果我想将对象数据成员与整数进行比较?

2 个答案:

答案 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个合格的类实例一起使用。