友元类
写法
用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声明