一个函数要成为一个类的友员函数,需要在该类的定义中声明该函数,并在函数声明的前面加上关键字friend。
友元函数本身的定义没有什么特殊要求,可以是一般函数,也可以是另一个类的成员函数。
为了能够在友元函数中访问并设置一个类的私有数据成员,友元函数一般将该类的引用作为函数参数。
//HW_CH03_38
//定义一个学生类Student,其中有成绩数据成员;
//定义一个教室类Teacher,其中有设置学生成绩的成员函数,该成员函数作为Student类的友元函数。
#include<iostream>
using namespace std;
class Student;
class Teacher {
public:
void setgrade(Student& stu, int grade);
};
class Student {
friend void Teacher::setgrade(Student& stu, int grade);
private:
int score = 0;
public:
void display() {
cout << "The student's grade is " << score << endl;
}
};
void Teacher::setgrade(Student& stu, int grade) {
stu.score = grade;
}
int main() {
Teacher liu;
Student stu;
liu.setgrade(stu, 99);
stu.display();
return 0;
}