运用友元关系定义一个学生的类和一个成绩的类,其中使得成绩类对象可以访问学生对象的私有数据,并编程实现(数据自定义)。 提示: 为使成绩对象可以访问学生对象的私有数据,在定义学生类时,将成绩类声明为
时间: 2024-11-20 07:56:14 浏览: 29
为了实现这个需求,首先我们需要定义两个类:`Student` 和 `Score`,并且在 `Student` 类中通过友元(Friend)关系让 `Score` 类能够访问其私有数据。下面是一个简单的 C++ 实现示例:
```cpp
// 定义学生类 Student
class Student {
private:
std::string name;
int age;
float gpa; // 成绩
public:
// 构造函数和析构函数
Student(const std::string& name, int age) : name(name), age(age) {}
// 设定 GPA 的朋友函数
friend void setGPA(Student&, float);
// 其他成员函数...
};
// 定义成绩类 Score
class Score {
private:
// 用于存储单科成绩
float subject_score;
public:
// 访问者模式下的分数设置函数
static void updateGPA(Student& student, float new_gpa) {
student.gpa = new_gpa;
}
// 其他成员函数...
};
// 使用部分实现
int main() {
Student john("John", 20);
Score math_score;
// 通过友元设置学生 GPA
math_score.updateGPA(john, 3.5);
// 现在 math_score 可以访问并修改 john 的 GPA
std::cout << "John's GPA: " << john.gpa << std::endl;
return 0;
}
```
在这个例子中,`Score` 类被声明为 `Student` 类的友元,所以 `updateGPA` 函数可以在不拥有 `Student` 对象实例的情况下,直接访问并修改 `Student` 对象的 `gpa` 属性。
阅读全文