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

vrb*_*lgi 3 c++ comparison operator-overloading

我有compare(>,<,==) 两个class object基于不同的标准,如下所述.

class Student
{
    int iRollNumber;
    int iSection;
    int iMarks;
}
Run Code Online (Sandbox Code Playgroud)
  1. 我想与iRollNumber, iSection, iMarks(独立)进行比较.
  2. 我想和iRollNumber, iSection(合并)做比较.
  3. 我想和iMarks, iSection(合并)做比较.
  4. ..........

目前我正在实现这一点GetMethods()并使用if elseif elseif..结构进行比较.

这导致到处乱码!

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

请建议一种优雅的编码方式.

要么

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

小智 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 );
Run Code Online (Sandbox Code Playgroud)

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

<  returns -1
== returns 0
>  returns 1
Run Code Online (Sandbox Code Playgroud)