派生类不继承朋友函数?[...]为什么?
因为这会打破封装:派生类无法再控制其朋友,所以它实际上无法控制谁有权访问其内部.
他们可能不会被宣布为静态或外部,为什么?
因为static没有意义(它只在属于类的函数中有意义,并且friends是自由函数),并且extern会再次违反封装,因为类实际上无法再控制哪个函数可以访问它:由于存在extern,朋友可以有效地来自一个不同的编译单元,这个单元是未知的.
请参阅Jan的答案进行更正.
static也不是extern,因为它不是函数签名的一部分,因此它并不需要指定函数.我相信函数本身的声明可以(在类之外)包含.