5. 运用友元关系定义一个学生的类和一个成绩的类,其中使得成绩类对象可以访问学生对象的私有数据,并编程实现(数据自定义)。 提示: 为使成绩对象可以访问学生对象的私有数据,在定义学生类时,将成绩类声明为他的友元类。
时间: 2024-11-20 20:55:59 浏览: 9
通过对象名和成员运算符访问对象中的成员-类和类的对象
在C++中,为了实现这种友元关系,首先我们需要定义两个类:`Student` 和 `Score`。`Score` 类需要作为 `Student` 的友元类,以便它可以访问 `Student` 的私有数据。下面是一个简单的示例:
```cpp
class Student {
private:
std::string name;
int id;
// 其他私有变量...
public:
// 构造函数、getter和setter等...
// 定义Friendship with Score class
friend class Score;
};
class Score {
private:
// 成绩类的私有变量...
public:
void setGrade(Student* student, int grade) {
student->setGrade(grade); // 可以直接通过指针访问学生类的私有方法
}
// 其他Score类的方法...
};
```
在这个例子中,`Score` 类有一个成员函数 `setGrade`,它接受一个指向 `Student` 类型的指针,可以直接调用 `Student` 类的 `setGrade` 方法(假设这个方法是公开的),从而设置学生的成绩。这样做允许了成绩类对学生的私有信息进行操作。
需要注意的是,尽管友元提高了数据的可见性,但过度使用可能会导致封装性的破坏,所以应该谨慎地在必要时使用友元关系。
阅读全文