小项 | 备注 |
---|---|
时间 | 2020 年 3 月 28 日 |
修改时间 | 2020 年 3 月 28 日 |
城市 | 北京市房山区 |
天气 | 晴 |
心情 | 你猜 |
0. 友元前世
类的 私有成员 只能在 自己类的成员函数内部访问,如果想在别处访问此类的私有成员,只能通过此类提供的接口(也是一些成员函数,比如:Get()、Set() 等) 间接进行。
如果在这个 “ 类的成员函数外部 ” ,想访问到这个类的 私有成员。于是,就有了 友元(friend) 的语法。
这相当于是说:朋友是值得信任的,所以可以对他们公开一些自己的隐私。
下图展示了友元的分类。
1. 友元全局函数
不是 某个类 的成员函数,是一个类外函数,但是可以访问类的 所有成员(成员函数、成员属性)。
语法:
friend 返回值类型 函数名(参数表);
2. 友元成员函数
使类A的 成员函数 成为类B的友元函数(注意:在类B中声明,且 类A的这个 成员函数 不能是私有的),这样类A的该成员函数就可以访问类B的 所有成员(成员函数、成员属性)。
语法:
friend 返回值类型 其他类的类名::成员函数名(参数表);
3. 友元类
类A是类B的友元类(注意:在类B中声明),则A就可以访问B的 所有成员(成员函数、成员属性)。【注意:类A、类B 无继承关系】
语法:
friend class 类名;