使用友元类时注意:
(1) 友元关系不能被继承。
(2) 友元关系是单向的,不具有交换性。若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明。
(3) 友元关系不具有传递性。若类B是类A的友元,类C是B的友元,类C不一定是类A的友元,同样要看类中是否有相应的申明
#include<iostream>
using namespace std;
class A
{
public:
A(int x):x(x){};
friend class B;
private:
int x;
};
class B
{
public:
B(A a):a(a){};
void display()
{
cout<<a.x<<endl;
}
private:
A a;
};
int main()
{
A a(3);
B b(a);
b.display();
return 0;
}