Как перегрузить оператор <, если у меня есть сам объект слева и целое справа?
Я знаю, как перегрузить оператор "<", если я хочу сравнить объект с самим собой. т.е.
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_);
}
BTW, считается плохим стилем, чтобы сделать оператор if, который отделяет только два оператора return true/false. Это должно быть написано непосредственно, как сделано в моем примере.
Итак, у вас есть 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
экземплярами класса.