我个人的想法:当你想要在一个友元声明里使用某个类或者非成员函数的名字时(事实上这个类或者非成员函数就是我们要使用的友元),他们自身可以是还未被声明的,可以在这个友元声明之后声明他们自身。
我觉得你不能理解可能是因为误解了"友元本身不一定真的声明在当前作用域中"这句话里的友元本身,这个友元就是我们在上面的友元声明中定义的友元,他的名字就是在之前的友元声明中被使用的名字,他的名字可以在之前的友元声明中被使用,而他本身的声明可以不在那个友元声明的作用域中,你可能误解了究竟哪个东西是友元,我们要定义为友元(也就是友元声明中使用的名字的本身)就是友元,而不是将其声明为友元的那个东西。
这只是我个人的看法,我没带书,有些东西想不起来了,可能是错的,仅供参考,仅供参考!