运算符重载 - 将对象与整数进行比较
Operator overloading - compare object with integer
如果我的左侧是对象本身,右侧是整数,我如何重载运算符<?
如果我想将对象与自身进行比较,我知道如何重载运算符"<".
即 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
限定实例。
相关文章:
- C++模板函数,用于比较任何无符号整数和有符号整数
- 正在LLVM中检测整数比较条件
- 为什么:不同符号的整数比较只是偶尔发生?
- C++ 如何比较n个排序的整数向量以找到互元素?
- 比较C++中两个整数的最有效和最干净的方法是什么?
- 禁止指针和整数之间的比较C++
- ISO C++禁止指针和整数 [-fpermissive] [c++] 之间的比较
- Qsort() 比较结构体整数的总和
- 比较两个整数在C++中与未知 int 类型的相等性
- Qt 错误 iso c++ 禁止指针和整数之间的比较 -permissive
- 比较整数提升后的结果
- 对压缩整数进行加法、减法和比较
- 如何正确比较整数和浮点值
- 错误:ISO C++禁止在指针和整数 [-fallowive] 之间进行比较
- C++ 将二进制字符串转换为整数或比较 2 个字符串以查找差异数
- "正确"无符号整数比较
- C++,指向整数比较错误的指针
- C++指针与整数比较编译错误
- 为什么此指针/整数比较会生成分段错误
- 这是不可避免的有符号和无符号整数比较吗?