我在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.