C++提供友元机制,允许一个类将其非公有成员的访问权授予指定的函数或类。友元声明以关键字friend开始,它只能出现在类的内部。
友元可以是普通的非成员函数,或是已定义的其他类的成员函数,或整个类。所以有友元函数和友元类的叫法。
(一)将非成员函数声明为友元函数
private:
friend double distance();//友元函数
(二)友元成员函数
class A{
public:
void setb(B& r);
};
class B{
private:
friend void A::setb(B& r);
}
(三)友元类
可以将一个类B声明为另一个类A的友元,这时B类就是类A的友元类。友元类B中的所有成员函数都是A类的友元函数,可以访问A类中的所有成员。
关于友元类的如下说明:
(1)友元的关系是单向的不是双向的,B是A的友元,不代表A是B的友元。
(2)友元关系不能传递或继承,如果B是A的友元类,C是B的友元类,不代表C是A的友元类。