友元函数:
如果在某个类的定义中用friend声明了一个外部函数,这个外部函数称为类的友元函数。
友元函数的声明可以放在类的私有部分,也可以放在公有部分,它们没有区别,都说明是该类的友元函数;一个函数可以使多个类的友元函数,只需在各个类中分别声明;友元函数的调用和一般函数的调用方式和原理一致。
对于使用友元函数,还需注意以下几点:
1.友元函数能访问类的所有成员的普通函数,一个函数可以是多个类的友元函数,只需在各个类中分别声明。
2.友元函数的定义可以在类的内部和外部,它虽然是在类内声明,但不属于任何类。在类外定义友元函数时,与普通函数一样,不应在函数名前面用类名加以限制。
3.c++不允许将构造函数,析构函数和虚函数声明为友元函数。
友元类:
friend class 类名;
友元类的注意事项:
1.友元关系是单向的,不具有交换性。若类X是类Y的友元,类Y不一定是类X的友元,要看类中书否有具体声明。
2.友元关系不具有传递性。若类X是类Y的友元,类Y是类Z的友元,类X不一定是类Z的友元,同样要看在类中是否有相应的声明。
3.友元关系不能被继承。