使用if else的对象比较|运算符重载

时间:2011-06-14 13:29:06

标签: c++ comparison operator-overloading

根据不同的标准,我必须compare(>,<,==)两个class object,如下所述。

class Student
{
    int iRollNumber;
    int iSection;
    int iMarks;
}
  1. 我想与iRollNumber, iSection, iMarks(独立)进行比较。
  2. 我想与iRollNumber, iSection(合并)进行比较。
  3. 我想与iMarks, iSection(合并)进行比较。
  4. ..........
  5. 目前,我使用GetMethods()实现此目标,并使用if elseif elseif..结构进行比较。

    这导致到处乱码!

    如果我使用operator overloading,我必须决定一种比较方式。

    请使用优雅的编码建议一种方法。

    或者

    是否可以多态调用运算符重载?

1 个答案:

答案 0 :(得分:7)

编写命名函数:

int CompareR( const Student & a, const Student & b );
int CompareS( const Student & a, const Student & b );
int CompareM( const Student & a, const Student & b );
int CompareRS( const Student & a, const Student & b );
int CompareMS( const Student & a, const Student & b );

虽然需要在课堂上进行这么多不同类型的比较有点不寻常 - 你通常只需要一个或两个。函数应返回与strcmp()相同的值:

<  returns -1
== returns 0
>  returns 1