类的封装性具有信息隐藏的能力,它使外部函数只能通过类的public成员函数才能访问类的private成员,但如果要多次访问,不仅操作麻烦,而且时间空间的开销大。
友元机制允许一个类授权其他函数直接访问类的private和protected成员。
友元包括友元函数,友元类,友元成员函数,最常用的就是友元函数。
class X {
…
friend T f(…)
…
};
T f(…) {
…
}
因为友元函数不是类的成员函数,所以不能加上类名::。友元函数的参数一般都要有类对象。
说明:
1、友元函数不是类的成员函数,所以放在private,protected,public都是一样的。
2、友元不具有逆向性和传递性。
一个类还可以是另一个类的友元,有缘类的所有成员函数都是另一个类的友元函数。
声明类B是类A的友元类:
class A{
friend class B;
};
class B{
};