1.什么是友元?
当我们需要在类的外部访问该类的私有成员和保护成员时,就可以利用友元来实现这一操作
在类中用 friend 关键字对函数或类进行声明
2.非成员函数友元
友元函数不是当前类的成员函数,而是当前类的外部函数,但是他可以访问该类的所有成员
class A
{
public:
friend void Func(A& a);
private:
int n;
};
void Func(A& a)
{
cout << a.n << endl;
}
3.成员函数友元
友元函数在类中声明,不仅可以访问自己所在类对象中的所有成员,还可以访问friend所声明语句所在类对象中的所有成员
4.类友元
在另一个类声明时加入friend语句(公有私有都行),将一个类作为另一个类的友元
5.特点
(1)不具备传递性
(2)无自反性(友元是单向的)
(3)破坏了面向对象的封装