友元:
定义的一些函数不属于类,但是可以访问类的数据成员,那么该定义的函数就叫友元函数;除了有友元函数还是友元类,统称为友元。
特点:
1、可以访问类的数据成员;
2、提高程序的运行效率(减少了类型检查和安全性检查等开销);
3、破坏了类的封装性和隐蔽性。
友元函数:
形式:
friend 类型 函数名(形参);
1、友元函数的声明可以放在类的私有部分,也可以放在类的公有部分;
2、一个函数可以是多个类的友元函数,只有要在各个类中声明即可;
3、友元函数的调用和普通函数调用保持一致。
友元类:
形式:
friend class 类名;
例如:
class A {
friend class B;
}
1、类B为类A的友元类,类B中所有的成员函数成为类A的友元函数,类B可以访问类A的全部成员;
2、友元关系不可以继承;
3、友元关系是单向的,不具备交换特性,如果想相互为友元,则需要彼此进行声明;
4、友元关系不可传递,即B为A的友元,C为B的友元,但是C不一定是A的友元,如果要成为友元,需要进行声明。