答案是它跟类的继承无关。Friend函数就相当于一个全局性质的函数谁都可以调用,看下面的图片。
从上图可以看出类的友元函数可以像其他一般函数一样被调用。但是类的友元函数之所以被称为类的是因为它必须至少包含一个类对象做参数,这个类对象可以是本类的也可以不是,但是如果没有类对象做参数则不行。如下图所示:
由上图可见,即使是没有继承关系的两个类,其中一个类的友元也可以以另一个类的对象为参数,但是遗憾的是它无法访问那个不相干的类的私有成员。下面我把代码稍微变更一下。
所以一个类的友元函数不以本类对象为参数是没有意义的。我现在再把友元函数的形参改成本类对象。
如果我现在把友元函数的形参改成非对象类型。
所以类的友元函数必有形参且至少包含一个本类对象,友元函数的友元性质只对本类适用。