友元函数的作用:提供直接访问对象的私有成员的接口。通过友元,一个不同函数或另一个类中的成员函数可以访问类中的私有成员和保护成员。
友元函数可以访问对象的私有成员,保护成员,但是普通函数不行
友元函数不能直接访问类的成员,只能访问对象成员,因此在写友元函数之前,先确定一个对象。
2.1.传参的对象 2.2.在函数中创建对象注意点:并不是赋予函数具有访问私有或者保护属性的数据 在友元函数中赋予对象具有这样的权利
#include<iostream> #include<string> using namespace std; class Student { public: MM(string name,int age):name(name),age(age){} void print() { cout<<name<<"\t"<<age <<endl; } //需要在函数中创建对象 friend void printInfo(); protected: string name; int age; } class Student { public: MM(string name,int age):name(name),age(age){} void print() { cout<<name<<"\t"<<age <<endl; } //传入对象 friend void printInfo1(MM object); protected: string name; int age; } //方法一的函数 void printInfo() { Student mm("张三",19); cout<<mm.name<<"\t"<<mm.age<<endl; } //方法二的函数 void printInfo1(Student object) { cout<<object.name<<"\t"<<object.age<<endl; } int main() { Student("李四",18); printInfo(); printInfo1(mm); }总结:友元函数就是赋予对象具有打破权限限定,但打破权限又必须在友元函数内访问。