友元
顾名思义,就是将一个类当作另一个类的朋友。谁可以作朋友呢?成为了朋友有什么用吗?
1.类或者类的成员函数以及外部函数都可以声明成友元。
2.如果被声明为友元,那么它就可以访问这个类中包括非公有成员在内的所有成员。
这也是友元的唯一作用,改变访问权限,所以需要注意友元声明并不是常规意义上的声明。
一般情况下,我们都需要在类内声明友元之前,在类的外部提供相应的声明
并且友元不具有传递性,如果A是B的友元,C是A的友元,但C不能访问B中的非公有成员。
class C;
class A
{
A()=default;
~A()=default;
friend class C;
};
class B{
B()=default;
~B()=default;
friend class A;
};
class C{
C()=default;
~C()=default;
};
如果要对重载函数声明为友元,则需要注意如果想要把一组所有的重载函数都声明为友元,则
每一个重载函数都需要分别声明。