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

Operator overloading - compare object with integer

本文关键字:整数 比较 对象 重载 运算符      更新时间:2023-10-16

如果我的左侧是对象本身,右侧是整数,我如何重载运算符<?

如果我想将对象与自身进行比较,我知道如何重载运算符"<".

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

其中 number 是类 NumberClass 的私有成员

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

这应该可以解决问题:

bool NumberClass::operator<(int integer_) {
  return (this->integer < integer_);
}

顺便说一句,制作仅分隔两个返回真/假语句的 if 语句被认为是不好的风格。这应该像我的例子中那样直接编写。

所以你在operator <的左侧和右侧都有NumberClass,对吗?

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限定实例。