在 C++ 中,我们除了可以将一个 函数 声明为友元函数,还可以将一个 类 声明为友元类,如果一个类是另一个类的友元类,那么友元类可以访问类的所有的私有成员。
使用 friend 修饰的类,称为友元类。
class ClassName
{
public:
friend class ClassName2;
};
class ClassName2
{
};
我们使用 friend 定义了一个友元类 ClassName2,此时 ClassName2 就可以访问。
C++ 友元类,可以访问类的所有的私有成员
#include <iostream>
#include <cstring>
using namespace std;
//声明教师类
class Techer;
//学生类
class Student
{
private:
string name;
int age;
public:
Student(string name, int age);
void stu_print(Techer &tech);
};
//教师类
class Techer
{
private:
string name;
int age;
public:
Techer(string name, int age);
//声明一个友元类
friend class Student;
};
//Student类的构造函数的实现
Student::Student(string name, int age)
{
this->name = name;
this->age = age;
}
//Techer类的构造函数的实现
Techer::Techer(string name, int age)
{
this->name = name;
this->age = age;
}
//打印Student类中的私有成员和Techer的私有成员
void Student::stu_print(Techer &tech)
{
//用this指针访问本类的成员
cout << "Studnet Name: " << this->name << " Age: " << this->age << endl;
//访问Techer类的成员
cout << "Teacher Name: " << tech.name << " Age: " << tech.age << endl;
}
int main(void)
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
Student stu1("HaiCoder", 110);
Techer t1("Jobs", 57);
stu1.stu_print(t1);
return 0;
}
程序运行后,控制台输出如下:
我们看到,我们可以在友元类里面访问另一个类的所有的私有成员。
在 C++ 中,我们除了可以将一个函数声明为友元函数,还可以将一个类声明为友元类,如果一个类是另一个类的友元类,那么友元类可以访问类的所有的私有成员。