为什么非要是友元呢?我只知道有限制不能用友员的,还有不能用成员的吗?
" target="_blank">[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
能啊,你其实可以用下面的方法:
class stu
{
public:
int x,y;
stu(int m,int n):x(m),y(n){}
};
ostream &operator<<(ostream &os,const stu &s)
{
os<<s.x<<endl<<s.y;return os;
}
我后面想了下,其实你对于<<的重载并不是针对类stu,而是全局的重载,即是说全局的<<操作符只要左边是ostream类型右边是stu类型,那么就会调用你重载的<<,但是这种情况下重载的<<不是stu的函数,不能访问stu的私有成员,所以你可以将其放入stu中声明为stu的友元函数,就变成了
friend ostream& operator<<(ostream &os,const stu &s)