友元
C++提供了一种允许外部类和外部函数存取类的私有成员和保护成员的辅助方法,即将它们声明为一个给定类的友元,使得其具有类成员函数的访问权限。
但友元本身不是类的成员
在一个类中,可以利用关键字friend将别的模块声明为它的友元,这样,该类中本来隐藏的信息就可以被友元函数访问。
友元函数: 友元是一般函数或者类的成员函数
**友元类:**友元是一个类。该类所有函数都为友元函数
class 类名
{
……//类中的其他成员
freind 类型 函数名 (形参表)
……//类中其他成员
};
非成员函数作友元(即友元函数特指类外的函数)
可以用两个连续调用的函数
a(){b()},a声明为类1的友元,b声明为类2的友元,也可以完成两个类之间的数据
因为友元函数没有this指针,则参数要有三种情况:
要访问非static成员时,需要对象做参数;
要访问static成员或全局变量时,则不需要对象做参数;
如果做参数的对象是全局对象,则不需要对象做参数.
可以直接调用友元函数,不需要通过对象或指针
友元类:
类A中的某些成员函数想访问B中的数据成员时:
class 类名B
{……//类中的其他成员
friend class 类名A;
……
}
友元的作用之一是(A)
提高程序的运行效率 加强类的封装性 实现数据的隐藏性 增加成员函数的种类
友元不具有传递性,有单向性,友元关系不能被继承