比较运算符不确定

时间:2017-05-05 18:11:39

标签: c++ class operator-overloading

我在Student课程中重载了一些比较运算符。 当我尝试使用它们时,结果是不确定的:

class Student {
public:
    int ID;
    int grade;
    int teamID;
    int power;
    Student(int id,int grade, int power): ID(id),
        grade(grade),teamID(-1),power(power){};
    ~Student() {};
bool operator==(Student* right) {
    return this->ID == right->ID;
}
bool operator<(Student* right) {
    return this->ID < right->ID;
}

bool operator>(Student* right) {
    return this->ID > right->ID;
}


};

这就是奇怪的事情发生的地方:

for (int i = 0; i < 10; i++) {
        Student* s1 = new Student(i + 1, i + 1, i + 1);
        Student* s2 = new Student(i + 2, i + 1, i + 1);
        cout << (s1 < s2);  
    } 

结果始终是0和1的一些排列,没有任何稳定。 我不知道为什么会这样。谁能帮我?我使用指针的原因是我使用指向Student的指针作为另一个模板类的类型T.

0 个答案:

没有答案