2013-12-21 45 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合格實例一起使用。