这个有很多种情况,比如说你的函数是通用的,但是想调用某个类里面的私有成员就必须声明为有元函数,再或者重载加法运算符的时候,为了保证位置无关性(两个元素互换位置没有影响),也需要声明为友元函数,再或者重载输入输出运算符,因为不能修改STL中的成员,所以必须声明为友元函数哇