有以下友元类的情况:
(继承关系都是public)
0.友元类可以访问类的private和protected数据
1.类A的友元类是B,那么在B类的成员中,可以通过类A定义的对象,直接访问A类的private和protected成员。(相当于此时B类的所有成员,都变成了A类的成员,可以随意访问A类成员)
2.类A的友元类是B,类A的派生类是C。那么友元类B中是不能访问派生类C的private和protected成员的。
(友元关系是不被继承的)
3.类A的友元类是B,友元类B的派生类是D,那么对于D类的成员来说是不能访问A类的private和protected成员的。
(友元关系不被继承的)
4.类A的派生类是类C,此时B是类C的友元类,那么此时B类的成员可以访问:C类的private和protected,并且可以访问类A的protected,但是private成员不行。(因为:类A的protected对于类C是protected,类A的private对于类C是不可以访问)