2013-12-21 32 views
0

如果我在左侧具有对象本身并且在右侧具有整数,那么如何重载运算符<?运算符重载 - 将对象与整数进行比较

我知道如何超载运算符“<”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语句,只有分隔两个回真/假声明。这应该直接写在我的例子中。

2

因此,您在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合格实例一起使用。