运用友元关系定义一个学生的类和一个成绩的类,其中使得成绩类对象可以访问学生对象的私有数据,并编程实现(数据自定义)。
时间: 2023-06-02 15:07:33 浏览: 179
好的,关于友元关系的定义,我们知道,友元关系是一种类与类之间的特殊关系,在这种关系下,类的成员函数可访问其它类的私有成员变量。下面是我编写的具体实现。
```
#include<iostream>
using namespace std;
class Student;//提前声明
class Score
{
public:
void setScore(Student &stu);//设置成绩
};
class Student
{
friend class Score;//Score为友元类
private:
int id;//学号
string name;//姓名
int age;//年龄
public:
void setId(int id){this->id = id;}//设置学号
void setName(string name){this->name = name;}//设置姓名
void setAge(int age){this->age = age;}//设置年龄
};
void Score::setScore(Student &stu)
{
//使用友元关系,访问Student类的私有成员变量
cout<<"请输入"<<stu.name<<"的成绩:"<<endl;
int score;
cin>>score;
cout<<stu.name<<"的学号为"<<stu.id<<",年龄为"<<stu.age<<",成绩为"<<score<<endl;
}
int main()
{
Student stu;
stu.setId(1);
stu.setName("小明");
stu.setAge(20);
Score sc;
sc.setScore(stu);//通过Score类对象访问Student类的私有成员变量
return 0;
}
```
在上面的程序中,我们定义了两个类:Student类和Score类。其中,Score类是Student类的友元类,表示Score类可以访问Student类的私有成员变量。实现时,我们声明了一个名为setScore的Score类成员函数,该函数的参数为Student类的对象引用,通过该函数我们可以访问Student类的私有成员变量,最后输出该学生的成绩。
编译并运行上述程序,输出结果为:
```
请输入小明的成绩:
95
小明的学号为1,年龄为20,成绩为95
```
可以看到,我们成功地运用友元关系定义了一个能够访问另一个类的私有成员变量的类,同时实现了相应的功能。