admin管理员组

文章数量:1122881

友元

友元

  • 友元类
  • 几点说明

友元类

写法
friend修饰类声明
示例

#include <iostream>using namespace std;class B;  //类B声明
class A
{
private:int data;friend class B; //这里是友元类的声明.
};class B
{
public:void func(int x, A &a) {a.data = x;cout << a.data << endl;}
};int main()
{A a;B b;b.func(123,a);return 0;
}

通过上述例子可以看出友元的特点,声明了friend,(类B是类A的友元),那么B就可以在成员函数中访问A的所有成员(成员变量,成员函数),不管用什么修饰符(private,protected)修饰,都能访问

几点说明

友元比较简单,这里不举例了
每个类都负责控制自己的友元类和友元函数,所以,总结如下:
(1)友元关系不能被子类继承
(2)友元关系是单向的,比如B是A的友元,并不代表A是B的友元
(3)友元关系没有传递性,例如B是A的友元,C是B的友元,并不代表C是A的友元
友元关系的判断,还是要看类定义中有没有对应的friend声明

本文标签: 友元