函数声明的意义就是让接下来的代码知道有这么个东西,能匹配原型而已。友元声明已经做到了“让后面的部分知道该函数的原型”的目的,当然也不需要额外的前置声明。调用时必须前置声明是因为编译器不能从调用过程反推函数原型,只能从原型判断调用是否符合规范。