如何在C++中为学生类设计一个友元函数,以便比较学生的成绩并找出一组学生(无论是通过对象数组还是至少三个对象)中的最高分和最低分?
时间: 2024-12-16 19:28:15 浏览: 11
在C++中,为学生类设计一个友元函数来比较成绩并找出最高分和最低分,首先需要定义一个友元函数,它不是学生类的成员,但可以访问私有数据成员。假设学生类名为`Student`,包含一个`score`属性。
```cpp
class Student {
private:
int score;
public:
// 学生构造函数等
int getScore() const { return score; }
};
// 友元声明,允许Student类之外的对象访问这个函数
class FindMinMax {
public:
static void findMinMax(const std::vector<Student>& students) {
if (students.empty()) {
std::cout << "Error: No students provided.\n";
return;
}
int max_score = students[0].getScore();
int min_score = students[0].getScore();
for (const auto& student : students) {
if (student.getScore() > max_score)
max_score = student.getScore();
if (student.getScore() < min_score)
min_score = student.getScore();
}
std::cout << "Highest score: " << max_score << "\n";
std::cout << "Lowest score: " << min_score << "\n";
}
};
```
你可以通过创建一个学生对象数组或至少三个对象,并传递给`findMinMax`函数:
```cpp
int main() {
std::vector<Student> students = { Student{85}, Student{92}, Student{78} };
FindMinMax::findMinMax(students);
return 0;
}
```
阅读全文