用C++运用友元关系定义一个学生的类和一个成绩的类,其中使得成绩类对象可以访问学生对象的私有数据,并编程实现(数据自定义)。为使成绩对象可以访问学生对象的私有数据,在定义学生类时,将成绩类声明为他的友元类。
时间: 2024-11-20 07:40:05 浏览: 17
在C++中,友元关系是一种特殊的关系,允许一个类的对象直接访问另一个类的私有成员。为了实现这个场景,我们可以创建两个类:`Student` 和 `Score`。首先,我们将`Score` 类声明为`Student` 的友元类。下面是代码示例:
```cpp
class Student {
private:
std::string name;
int age;
float GPA; // 假设GPA是一个浮点数
public:
// 构造函数、析构函数和其他公共成员可以省略
class FriendScore; // 定义FriendScore作为类内部的朋友类
friend class FriendScore;
};
// 在Student类内定义FriendScore作为友元类
class Student::FriendScore {
private:
float score;
public:
FriendScore(float s) : score(s) {}
void setGrade(Student& student) {
student.GPA += score; // 访问Student的私有变量GPA
std::cout << "Score added to student's GPA: " << score << "\n";
}
};
int main() {
Student john("John Doe", 20, 3.5);
Student::FriendScore grade(4.0); // 创建一个分数对象
grade.setGrade(john); // 尽管grade是私有的,但是由于它是john的好友,所以可以直接操作john的GPA
return 0;
}
```
在这个例子中,`FriendScore` 类可以访问`Student` 的`GPA` 私有属性,通过`setGrade` 函数给`john` 的`GPA` 添加分数。注意,实际项目中,过度使用友元可能会导致代码结构复杂度增加,因此应谨慎使用。
阅读全文