✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343
📚专栏地址:C/C++知识点
📣专栏定位:整理一下 C++ 相关的知识点,供大家学习参考~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪
🎏唠叨唠叨:在这个专栏里我会整理一些琐碎的 C++ 知识点,方便大家作为字典查询~
友元类与友元函数
友元函数
在 C++ 中,类 的私有成员(private)和只能在本类中访问,类的保护成员(protected)只能在本类或者子类中访问,但类的友元函数可以访问类的私有成员和保护成员。
类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是 成员函数。
定义
使用 friend 修饰的函数,称为友元函数。
语法
class ClassName{
public:
friend void func();
};
void func(){
}
使用 friend 定义了一个友元函数 func。
案例
class Student{
public:
friend void printName(Student stu); //友元函数
Student(string name, int age){
this->name = name;
this->age = age;
}
private:
string name;
int age;
};
//非成员函数
void printName(Student stu){
cout <<stu.name << endl; //不报错
}
int main(){
Student s1("zs",20);
printName(s1);
return 0;
}
友元类
定义
使用 friend 修饰的类,称为友元类。
语法
class ClassName{
public:
friend class ClassName2;
};
class ClassName2{
};
使用 friend 定义了一个友元类 ClassName2,此时 ClassName2 就可以访问类的所有的私有成员
案例
class Teacher;
class Student{
private:
string name ="王五";
int age;
public:
void stu_print(Teacher &t);
};
class Teacher{
private:
string name="张三";
int age;
public:
friend class Student; //友元类
};
void Student::stu_print(Teacher &t){
cout << this->name <<endl;
cout << t.name <<endl;
}
int main(){
Student s1;
Teacher t1;
s1.stu_print(t1);
return 0;
}